/*
Copyright (c) 2011 Cimaron Shanahan

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/


(function(glsl) {
	
	/*IF DEBUG
	var yydebug = 1;
	//parser specific
	var YYDEBUG = 0;
	*/
	var YYERROR_VERBOSE = 1	;

	var YYTOKENTYPE = 1;
	var yytokentype = {
		ATTRIBUTE : 258,
		CONST_TOK : 259,
		BOOL_TOK : 260,
		FLOAT_TOK : 261,
		INT_TOK : 262,
		UINT_TOK : 263,
		BREAK : 264,
		CONTINUE : 265,
		DO : 266,
		ELSE : 267,
		FOR : 268,
		IF : 269,
		DISCARD : 270,
		RETURN : 271,
		SWITCH : 272,
		CASE : 273,
		DEFAULT : 274,
		BVEC2 : 275,
		BVEC3 : 276,
		BVEC4 : 277,
		IVEC2 : 278,
		IVEC3 : 279,
		IVEC4 : 280,
		UVEC2 : 281,
		UVEC3 : 282,
		UVEC4 : 283,
		VEC2 : 284,
		VEC3 : 285,
		VEC4 : 286,
		CENTROID : 287,
		IN_TOK : 288,
		OUT_TOK : 289,
		INOUT_TOK : 290,
		UNIFORM : 291,
		VARYING : 292,
		NOPERSPECTIVE : 293,
		FLAT : 294,
		SMOOTH : 295,
		MAT2X2 : 296,
		MAT2X3 : 297,
		MAT2X4 : 298,
		MAT3X2 : 299,
		MAT3X3 : 300,
		MAT3X4 : 301,
		MAT4X2 : 302,
		MAT4X3 : 303,
		MAT4X4 : 304,
		SAMPLER1D : 305,
		SAMPLER2D : 306,
		SAMPLER3D : 307,
		SAMPLERCUBE : 308,
		SAMPLER1DSHADOW : 309,
		SAMPLER2DSHADOW : 310,
		SAMPLERCUBESHADOW : 311,
		SAMPLER1DARRAY : 312,
		SAMPLER2DARRAY : 313,
		SAMPLER1DARRAYSHADOW : 314,
		SAMPLER2DARRAYSHADOW : 315,
		ISAMPLER1D : 316,
		ISAMPLER2D : 317,
		ISAMPLER3D : 318,
		ISAMPLERCUBE : 319,
		ISAMPLER1DARRAY : 320,
		ISAMPLER2DARRAY : 321,
		USAMPLER1D : 322,
		USAMPLER2D : 323,
		USAMPLER3D : 324,
		USAMPLERCUBE : 325,
		USAMPLER1DARRAY : 326,
		USAMPLER2DARRAY : 327,
		STRUCT : 328,
		VOID_TOK : 329,
		WHILE : 330,
		IDENTIFIER : 331,
		TYPE_IDENTIFIER : 332,
		NEW_IDENTIFIER : 333,
		FLOATCONSTANT : 334,
		INTCONSTANT : 335,
		UINTCONSTANT : 336,
		BOOLCONSTANT : 337,
		FIELD_SELECTION : 338,
		LEFT_OP : 339,
		RIGHT_OP : 340,
		INC_OP : 341,
		DEC_OP : 342,
		LE_OP : 343,
		GE_OP : 344,
		EQ_OP : 345,
		NE_OP : 346,
		AND_OP : 347,
		OR_OP : 348,
		XOR_OP : 349,
		MUL_ASSIGN : 350,
		DIV_ASSIGN : 351,
		ADD_ASSIGN : 352,
		MOD_ASSIGN : 353,
		LEFT_ASSIGN : 354,
		RIGHT_ASSIGN : 355,
		AND_ASSIGN : 356,
		XOR_ASSIGN : 357,
		OR_ASSIGN : 358,
		SUB_ASSIGN : 359,
		INVARIANT : 360,
		LOWP : 361,
		MEDIUMP : 362,
		HIGHP : 363,
		SUPERP : 364,
		PRECISION : 365,
		VERSION : 366,
		EXTENSION : 367,
		LINE : 368,
		COLON : 369,
		EOL : 370,
		INTERFACE : 371,
		OUTPUT : 372,
		PRAGMA_DEBUG_ON : 373,
		PRAGMA_DEBUG_OFF : 374,
		PRAGMA_OPTIMIZE_ON : 375,
		PRAGMA_OPTIMIZE_OFF : 376,
		PRAGMA_INVARIANT_ALL : 377,
		LAYOUT_TOK : 378,
		ASM : 379,
		CLASS : 380,
		UNION : 381,
		ENUM : 382,
		TYPEDEF : 383,
		TEMPLATE : 384,
		THIS : 385,
		PACKED_TOK : 386,
		GOTO : 387,
		INLINE_TOK : 388,
		NOINLINE : 389,
		VOLATILE : 390,
		PUBLIC_TOK : 391,
		STATIC : 392,
		EXTERN : 393,
		EXTERNAL : 394,
		LONG_TOK : 395,
		SHORT_TOK : 396,
		DOUBLE_TOK : 397,
		HALF : 398,
		FIXED_TOK : 399,
		UNSIGNED : 400,
		INPUT_TOK : 401,
		OUPTUT : 402,
		HVEC2 : 403,
		HVEC3 : 404,
		HVEC4 : 405,
		DVEC2 : 406,
		DVEC3 : 407,
		DVEC4 : 408,
		FVEC2 : 409,
		FVEC3 : 410,
		FVEC4 : 411,
		SAMPLER2DRECT : 412,
		SAMPLER3DRECT : 413,
		SAMPLER2DRECTSHADOW : 414,
		SIZEOF : 415,
		CAST : 416,
		NAMESPACE : 417,
		USING : 418,
		ERROR_TOK : 419,
		COMMON : 420,
		PARTITION : 421,
		ACTIVE : 422,
		SAMPLERBUFFER : 423,
		FILTER : 424,
		IMAGE1D : 425,
		IMAGE2D : 426,
		IMAGE3D : 427,
		IMAGECUBE : 428,
		IMAGE1DARRAY : 429,
		IMAGE2DARRAY : 430,
		IIMAGE1D : 431,
		IIMAGE2D : 432,
		IIMAGE3D : 433,
		IIMAGECUBE : 434,
		IIMAGE1DARRAY : 435,
		IIMAGE2DARRAY : 436,
		UIMAGE1D : 437,
		UIMAGE2D : 438,
		UIMAGE3D : 439,
		UIMAGECUBE : 440,
		UIMAGE1DARRAY : 441,
		UIMAGE2DARRAY : 442,
		IMAGE1DSHADOW : 443,
		IMAGE2DSHADOW : 444,
		IMAGEBUFFER : 445,
		IIMAGEBUFFER : 446,
		UIMAGEBUFFER : 447,
		IMAGE1DARRAYSHADOW : 448,
		IMAGE2DARRAYSHADOW : 449,
		ROW_MAJOR : 450
	};


	var YYSTYPE = function() {
		return {};
	};
	var YYSTYPE_IS_TRIVIAL = 1;


	var YYLTYPE = function() {
		return { 
			first_line : null,
			first_column : null,
			last_line : null,
			last_column : null
		};
	};
	var YYLTYPE_IS_TRIVIAL = 1;

	/* YYFINAL -- State number of the termination state.  */
	var YYFINAL = 5;
	/* YYLAST -- Last index in YYTABLE.  */
	var YYLAST = 3692;

	/* YYNTOKENS -- Number of terminals.  */
	var YYNTOKENS = 220;
	/* YYNNTS -- Number of nonterminals.  */
	var YYNNTS = 93;
	/* YYNRULES -- Number of rules.  */
	var YYNRULES = 291;
	/* YYNRULES -- Number of states.  */
	var YYNSTATES = 434;

	/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
	var YYUNDEFTOK = 2;
	var YYMAXUTOK = 450;

	var YYTRANSLATE = function(YYX) {
		return ((YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK);
	};

	/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
	var yytranslate = [
		   0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,   204,     2,     2,     2,   208,   211,     2,
		 196,   197,   206,   202,   201,   203,   200,   207,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,   215,   217,
		 209,   216,   210,   214,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,   198,     2,   199,   212,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,   218,   213,   219,   205,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     2,     2,     2,     2,
		   2,     2,     2,     2,     2,     2,     1,     2,     3,     4,
		   5,     6,     7,     8,     9,    10,    11,    12,    13,    14,
		  15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
		  35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		  75,    76,    77,    78,    79,    80,    81,    82,    83,    84,
		  85,    86,    87,    88,    89,    90,    91,    92,    93,    94,
		  95,    96,    97,    98,    99,   100,   101,   102,   103,   104,
		 105,   106,   107,   108,   109,   110,   111,   112,   113,   114,
		 115,   116,   117,   118,   119,   120,   121,   122,   123,   124,
		 125,   126,   127,   128,   129,   130,   131,   132,   133,   134,
		 135,   136,   137,   138,   139,   140,   141,   142,   143,   144,
		 145,   146,   147,   148,   149,   150,   151,   152,   153,   154,
		 155,   156,   157,   158,   159,   160,   161,   162,   163,   164,
		 165,   166,   167,   168,   169,   170,   171,   172,   173,   174,
		 175,   176,   177,   178,   179,   180,   181,   182,   183,   184,
		 185,   186,   187,   188,   189,   190,   191,   192,   193,   194,
		 195
	];

	/*IF DEBUG
	// YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
	// YYRHS.
	var yyprhs = [
		   0,     0,     3,     4,     9,    10,    14,    17,    20,    23,
		  26,    29,    30,    33,    35,    37,    39,    45,    47,    50,
		  52,    54,    56,    58,    60,    62,    64,    68,    70,    75,
		  77,    81,    84,    87,    89,    91,    93,    97,   100,   103,
		 106,   108,   111,   115,   118,   120,   122,   124,   127,   130,
		 133,   135,   138,   142,   145,   147,   150,   153,   156,   158,
		 160,   162,   164,   166,   170,   174,   178,   180,   184,   188,
		 190,   194,   198,   200,   204,   208,   212,   216,   218,   222,
		 226,   228,   232,   234,   238,   240,   244,   246,   250,   252,
		 256,   258,   262,   264,   270,   272,   276,   278,   280,   282,
		 284,   286,   288,   290,   292,   294,   296,   298,   300,   304,
		 306,   309,   312,   317,   320,   322,   324,   327,   331,   335,
		 338,   344,   348,   351,   355,   358,   359,   361,   363,   365,
		 367,   369,   373,   379,   386,   394,   403,   409,   411,   414,
		 419,   425,   432,   440,   445,   448,   450,   453,   458,   460,
		 464,   466,   470,   472,   474,   476,   478,   480,   482,   485,
		 487,   490,   493,   497,   499,   501,   503,   505,   508,   510,
		 512,   515,   518,   520,   522,   525,   527,   531,   536,   538,
		 540,   542,   544,   546,   548,   550,   552,   554,   556,   558,
		 560,   562,   564,   566,   568,   570,   572,   574,   576,   578,
		 580,   582,   584,   586,   588,   590,   592,   594,   596,   598,
		 600,   602,   604,   606,   608,   610,   612,   614,   616,   618,
		 620,   622,   624,   626,   628,   630,   632,   634,   636,   638,
		 640,   642,   644,   646,   648,   650,   656,   661,   663,   666,
		 670,   672,   676,   678,   683,   685,   687,   689,   691,   693,
		 695,   697,   699,   701,   703,   705,   708,   709,   714,   716,
		 718,   721,   725,   727,   730,   732,   735,   741,   745,   747,
		 749,   754,   760,   764,   767,   773,   781,   788,   790,   792,
		 794,   795,   798,   802,   805,   808,   811,   815,   818,   820,
		 822,   824
	];
	
	// YYRHS -- A `-1'-separated list of the rules' RHS.
	var yyrhs = [
		 221,     0,    -1,    -1,   223,   225,   222,   228,    -1,    -1,
		 111,    80,   115,    -1,   118,   115,    -1,   119,   115,    -1,
		 120,   115,    -1,   121,   115,    -1,   122,   115,    -1,    -1,
		 225,   227,    -1,    76,    -1,    77,    -1,    78,    -1,   112,
		 226,   114,   226,   115,    -1,   311,    -1,   228,   311,    -1,
		  76,    -1,    78,    -1,   229,    -1,    80,    -1,    81,    -1,
		  79,    -1,    82,    -1,   196,   260,   197,    -1,   230,    -1,
		 231,   198,   232,   199,    -1,   233,    -1,   231,   200,   226,
		  -1,   231,    86,    -1,   231,    87,    -1,   260,    -1,   234,
		  -1,   235,    -1,   231,   200,   240,    -1,   237,   197,    -1,
		 236,   197,    -1,   238,    74,    -1,   238,    -1,   238,   258,
		  -1,   237,   201,   258,    -1,   239,   196,    -1,   281,    -1,
		 229,    -1,    83,    -1,   242,   197,    -1,   241,   197,    -1,
		 243,    74,    -1,   243,    -1,   243,   258,    -1,   242,   201,
		 258,    -1,   229,   196,    -1,   231,    -1,    86,   244,    -1,
		  87,   244,    -1,   245,   244,    -1,   202,    -1,   203,    -1,
		 204,    -1,   205,    -1,   244,    -1,   246,   206,   244,    -1,
		 246,   207,   244,    -1,   246,   208,   244,    -1,   246,    -1,
		 247,   202,   246,    -1,   247,   203,   246,    -1,   247,    -1,
		 248,    84,   247,    -1,   248,    85,   247,    -1,   248,    -1,
		 249,   209,   248,    -1,   249,   210,   248,    -1,   249,    88,
		 248,    -1,   249,    89,   248,    -1,   249,    -1,   250,    90,
		 249,    -1,   250,    91,   249,    -1,   250,    -1,   251,   211,
		 250,    -1,   251,    -1,   252,   212,   251,    -1,   252,    -1,
		 253,   213,   252,    -1,   253,    -1,   254,    92,   253,    -1,
		 254,    -1,   255,    94,   254,    -1,   255,    -1,   256,    93,
		 255,    -1,   256,    -1,   256,   214,   260,   215,   258,    -1,
		 257,    -1,   244,   259,   258,    -1,   216,    -1,    95,    -1,
		  96,    -1,    98,    -1,    97,    -1,   104,    -1,    99,    -1,
		 100,    -1,   101,    -1,   102,    -1,   103,    -1,   258,    -1,
		 260,   201,   258,    -1,   257,    -1,   263,   217,    -1,   271,
		 217,    -1,   110,   285,   282,   217,    -1,   264,   197,    -1,
		 266,    -1,   265,    -1,   266,   268,    -1,   265,   201,   268,
		  -1,   273,   229,   196,    -1,   281,   226,    -1,   281,   226,
		 198,   261,   199,    -1,   278,   269,   267,    -1,   269,   267,
		  -1,   278,   269,   270,    -1,   269,   270,    -1,    -1,    33,
		  -1,    34,    -1,    35,    -1,   281,    -1,   272,    -1,   271,
		 201,   226,    -1,   271,   201,   226,   198,   199,    -1,   271,
		 201,   226,   198,   261,   199,    -1,   271,   201,   226,   198,
		 199,   216,   291,    -1,   271,   201,   226,   198,   261,   199,
		 216,   291,    -1,   271,   201,   226,   216,   291,    -1,   273,
		  -1,   273,   226,    -1,   273,   226,   198,   199,    -1,   273,
		 226,   198,   261,   199,    -1,   273,   226,   198,   199,   216,
		 291,    -1,   273,   226,   198,   261,   199,   216,   291,    -1,
		 273,   226,   216,   291,    -1,   105,   229,    -1,   281,    -1,
		 279,   281,    -1,   123,   196,   275,   197,    -1,   276,    -1,
		 275,   201,   276,    -1,   226,    -1,   226,   216,    80,    -1,
		  40,    -1,    39,    -1,    38,    -1,     4,    -1,   280,    -1,
		 274,    -1,   274,   280,    -1,   277,    -1,   277,   280,    -1,
		 105,   280,    -1,   105,   277,   280,    -1,   105,    -1,     4,
		  -1,     3,    -1,    37,    -1,    32,    37,    -1,    33,    -1,
		  34,    -1,    32,    33,    -1,    32,    34,    -1,    36,    -1,
		 282,    -1,   285,   282,    -1,   283,    -1,   283,   198,   199,
		  -1,   283,   198,   261,   199,    -1,   284,    -1,   286,    -1,
		  77,    -1,    74,    -1,     6,    -1,     7,    -1,     8,    -1,
		   5,    -1,    29,    -1,    30,    -1,    31,    -1,    20,    -1,
		  21,    -1,    22,    -1,    23,    -1,    24,    -1,    25,    -1,
		  26,    -1,    27,    -1,    28,    -1,    41,    -1,    42,    -1,
		  43,    -1,    44,    -1,    45,    -1,    46,    -1,    47,    -1,
		  48,    -1,    49,    -1,    50,    -1,    51,    -1,   157,    -1,
		  52,    -1,    53,    -1,    54,    -1,    55,    -1,   159,    -1,
		  56,    -1,    57,    -1,    58,    -1,    59,    -1,    60,    -1,
		  61,    -1,    62,    -1,    63,    -1,    64,    -1,    65,    -1,
		  66,    -1,    67,    -1,    68,    -1,    69,    -1,    70,    -1,
		  71,    -1,    72,    -1,   108,    -1,   107,    -1,   106,    -1,
		  73,   226,   218,   287,   219,    -1,    73,   218,   287,   219,
		  -1,   288,    -1,   287,   288,    -1,   281,   289,   217,    -1,
		 290,    -1,   289,   201,   290,    -1,   226,    -1,   226,   198,
		 261,   199,    -1,   258,    -1,   262,    -1,   295,    -1,   294,
		  -1,   292,    -1,   300,    -1,   301,    -1,   304,    -1,   305,
		  -1,   306,    -1,   310,    -1,   218,   219,    -1,    -1,   218,
		 296,   299,   219,    -1,   298,    -1,   294,    -1,   218,   219,
		  -1,   218,   299,   219,    -1,   293,    -1,   299,   293,    -1,
		 217,    -1,   260,   217,    -1,    14,   196,   260,   197,   302,
		  -1,   293,    12,   293,    -1,   293,    -1,   260,    -1,   273,
		 226,   216,   291,    -1,    17,   196,   260,   197,   295,    -1,
		  18,   260,   215,    -1,    19,   215,    -1,    75,   196,   303,
		 197,   297,    -1,    11,   293,    75,   196,   260,   197,   217,
		  -1,    13,   196,   307,   309,   197,   297,    -1,   300,    -1,
		 292,    -1,   303,    -1,    -1,   308,   217,    -1,   308,   217,
		 260,    -1,    10,   217,    -1,     9,   217,    -1,    16,   217,
		  -1,    16,   260,   217,    -1,    15,   217,    -1,   312,    -1,
		 262,    -1,   224,    -1,   263,   298,    -1
	];

	// YYRLINE[YYN] -- source line where rule number YYN was defined.
	var yyrline = [
		   0,   218,   218,   217,   229,   231,   271,   272,   273,   274,
		 275,   287,   289,   293,   294,   295,   299,   308,   316,   327,
		 328,   332,   339,   346,   353,   360,   367,   374,   375,   381,
		 385,   392,   398,   407,   411,   415,   416,   425,   426,   430,
		 431,   435,   441,   453,   457,   463,   470,   480,   481,   485,
		 486,   490,   496,   508,   519,   520,   526,   532,   542,   543,
		 544,   545,   549,   550,   556,   562,   571,   572,   578,   587,
		 588,   594,   603,   604,   610,   616,   622,   631,   632,   638,
		 647,   648,   657,   658,   667,   668,   677,   678,   687,   688,
		 697,   698,   707,   708,   717,   718,   727,   728,   729,   730,
		 731,   732,   733,   734,   735,   736,   737,   741,   745,   761,
		 765,   770,   774,   783,   787,   788,   792,   797,   805,   819,
		 829,   844,   851,   856,   867,   880,   883,   888,   893,   902,
		 906,   907,   917,   927,   937,   947,   957,   971,   982,   991,
		1000,  1009,  1018,  1027,  1036,  1050,  1057,  1068,  1075,  1076,
		1095,  1124,  1165,  1170,  1175,  1183,  1191,  1192,  1193,  1198,
		1199,  1204,  1209,  1215,  1223,  1228,  1233,  1238,  1244,  1249,
		1254,  1259,  1264,  1272,  1276,  1284,  1285,  1291,  1300,  1306,
		1312,  1321,  1322,  1323,  1324,  1325,  1326,  1327,  1328,  1329,
		1330,  1331,  1332,  1333,  1334,  1335,  1336,  1337,  1338,  1339,
		1340,  1341,  1342,  1343,  1344,  1345,  1346,  1347,  1348,  1349,
		1350,  1351,  1352,  1353,  1354,  1355,  1356,  1357,  1358,  1359,
		1360,  1361,  1362,  1363,  1364,  1365,  1366,  1367,  1368,  1369,
		1370,  1371,  1375,  1385,  1395,  1408,  1415,  1424,  1429,  1437,
		1452,  1457,  1465,  1472,  1481,  1485,  1491,  1492,  1496,  1497,
		1498,  1499,  1500,  1501,  1502,  1506,  1513,  1512,  1526,  1527,
		1531,  1537,  1546,  1556,  1568,  1574,  1583,  1592,  1597,  1605,
		1609,  1623,  1627,  1628,  1632,  1639,  1646,  1656,  1657,  1661,
		1663,  1669,  1674,  1683,  1689,  1695,  1701,  1707,  1716,  1717,
		1718,  1722
	];
	*/

	// YYTNAME[SYMBOL-NUM] -- String name of the symbol SYMBOL-NUM.
	// First, the terminals, then, starting at YYNTOKENS, nonterminals.
	var yytname = [
		"$end", "error", "$undefined", "ATTRIBUTE", "CONST_TOK", "BOOL_TOK",
		"FLOAT_TOK", "INT_TOK", "UINT_TOK", "BREAK", "CONTINUE", "DO", "ELSE",
		"FOR", "IF", "DISCARD", "RETURN", "SWITCH", "CASE", "DEFAULT", "BVEC2",
		"BVEC3", "BVEC4", "IVEC2", "IVEC3", "IVEC4", "UVEC2", "UVEC3", "UVEC4",
		"VEC2", "VEC3", "VEC4", "CENTROID", "IN_TOK", "OUT_TOK", "INOUT_TOK",
		"UNIFORM", "VARYING", "NOPERSPECTIVE", "FLAT", "SMOOTH", "MAT2X2",
		"MAT2X3", "MAT2X4", "MAT3X2", "MAT3X3", "MAT3X4", "MAT4X2", "MAT4X3",
		"MAT4X4", "SAMPLER1D", "SAMPLER2D", "SAMPLER3D", "SAMPLERCUBE",
		"SAMPLER1DSHADOW", "SAMPLER2DSHADOW", "SAMPLERCUBESHADOW",
		"SAMPLER1DARRAY", "SAMPLER2DARRAY", "SAMPLER1DARRAYSHADOW",
		"SAMPLER2DARRAYSHADOW", "ISAMPLER1D", "ISAMPLER2D", "ISAMPLER3D",
		"ISAMPLERCUBE", "ISAMPLER1DARRAY", "ISAMPLER2DARRAY", "USAMPLER1D",
		"USAMPLER2D", "USAMPLER3D", "USAMPLERCUBE", "USAMPLER1DARRAY",
		"USAMPLER2DARRAY", "STRUCT", "VOID_TOK", "WHILE", "IDENTIFIER",
		"TYPE_IDENTIFIER", "NEW_IDENTIFIER", "FLOATCONSTANT", "INTCONSTANT",
		"UINTCONSTANT", "BOOLCONSTANT", "FIELD_SELECTION", "LEFT_OP", "RIGHT_OP",
		"INC_OP", "DEC_OP", "LE_OP", "GE_OP", "EQ_OP", "NE_OP", "AND_OP",
		"OR_OP", "XOR_OP", "MUL_ASSIGN", "DIV_ASSIGN", "ADD_ASSIGN",
		"MOD_ASSIGN", "LEFT_ASSIGN", "RIGHT_ASSIGN", "AND_ASSIGN", "XOR_ASSIGN",
		"OR_ASSIGN", "SUB_ASSIGN", "INVARIANT", "LOWP", "MEDIUMP", "HIGHP",
		"SUPERP", "PRECISION", "VERSION", "EXTENSION", "LINE", "COLON", "EOL",
		"INTERFACE", "OUTPUT", "PRAGMA_DEBUG_ON", "PRAGMA_DEBUG_OFF",
		"PRAGMA_OPTIMIZE_ON", "PRAGMA_OPTIMIZE_OFF", "PRAGMA_INVARIANT_ALL",
		"LAYOUT_TOK", "ASM", "CLASS", "UNION", "ENUM", "TYPEDEF", "TEMPLATE",
		"THIS", "PACKED_TOK", "GOTO", "INLINE_TOK", "NOINLINE", "VOLATILE",
		"PUBLIC_TOK", "STATIC", "EXTERN", "EXTERNAL", "LONG_TOK", "SHORT_TOK",
		"DOUBLE_TOK", "HALF", "FIXED_TOK", "UNSIGNED", "INPUT_TOK", "OUPTUT",
		"HVEC2", "HVEC3", "HVEC4", "DVEC2", "DVEC3", "DVEC4", "FVEC2", "FVEC3",
		"FVEC4", "SAMPLER2DRECT", "SAMPLER3DRECT", "SAMPLER2DRECTSHADOW",
		"SIZEOF", "CAST", "NAMESPACE", "USING", "ERROR_TOK", "COMMON",
		"PARTITION", "ACTIVE", "SAMPLERBUFFER", "FILTER", "IMAGE1D", "IMAGE2D",
		"IMAGE3D", "IMAGECUBE", "IMAGE1DARRAY", "IMAGE2DARRAY", "IIMAGE1D",
		"IIMAGE2D", "IIMAGE3D", "IIMAGECUBE", "IIMAGE1DARRAY", "IIMAGE2DARRAY",
		"UIMAGE1D", "UIMAGE2D", "UIMAGE3D", "UIMAGECUBE", "UIMAGE1DARRAY",
		"UIMAGE2DARRAY", "IMAGE1DSHADOW", "IMAGE2DSHADOW", "IMAGEBUFFER",
		"IIMAGEBUFFER", "UIMAGEBUFFER", "IMAGE1DARRAYSHADOW",
		"IMAGE2DARRAYSHADOW", "ROW_MAJOR", "'('", "')'", "'['", "']'", "'.'",
		"','", "'+'", "'-'", "'!'", "'~'", "'*'", "'/'", "'%'", "'<'", "'>'",
		"'&'", "'^'", "'|'", "'?'", "':'", "'='", "';'", "'{'", "'}'", "$accept",
		"translation_unit", "$@1", "version_statement", "pragma_statement",
		"extension_statement_list", "any_identifier", "extension_statement",
		"external_declaration_list", "variable_identifier", "primary_expression",
		"postfix_expression", "integer_expression", "function_call",
		"function_call_or_method", "function_call_generic",
		"function_call_header_no_parameters",
		"function_call_header_with_parameters", "function_call_header",
		"function_identifier", "method_call_generic",
		"method_call_header_no_parameters", "method_call_header_with_parameters",
		"method_call_header", "unary_expression", "unary_operator",
		"multiplicative_expression", "additive_expression", "shift_expression",
		"relational_expression", "equality_expression", "and_expression",
		"exclusive_or_expression", "inclusive_or_expression",
		"logical_and_expression", "logical_xor_expression",
		"logical_or_expression", "conditional_expression",
		"assignment_expression", "assignment_operator", "expression",
		"constant_expression", "declaration", "function_prototype",
		"function_declarator", "function_header_with_parameters",
		"function_header", "parameter_declarator", "parameter_declaration",
		"parameter_qualifier", "parameter_type_specifier",
		"init_declarator_list", "single_declaration", "fully_specified_type",
		"layout_qualifier", "layout_qualifier_id_list", "layout_qualifier_id",
		"interpolation_qualifier", "parameter_type_qualifier", "type_qualifier",
		"storage_qualifier", "type_specifier", "type_specifier_no_prec",
		"type_specifier_nonarray", "basic_type_specifier_nonarray",
		"precision_qualifier", "struct_specifier", "struct_declaration_list",
		"struct_declaration", "struct_declarator_list", "struct_declarator",
		"initializer", "declaration_statement", "statement", "simple_statement",
		"compound_statement", "$@2", "statement_no_new_scope",
		"compound_statement_no_new_scope", "statement_list",
		"expression_statement", "selection_statement",
		"selection_rest_statement", "condition", "switch_statement",
		"case_label", "iteration_statement", "for_init_statement",
		"conditionopt", "for_rest_statement", "jump_statement",
		"external_declaration", "function_definition", 0
	];

	/*IF YYPRINT
	// YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
	// token YYLEX-NUM.
	var yytoknum = [
		   0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
		 265,   266,   267,   268,   269,   270,   271,   272,   273,   274,
		 275,   276,   277,   278,   279,   280,   281,   282,   283,   284,
		 285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
		 295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
		 305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
		 315,   316,   317,   318,   319,   320,   321,   322,   323,   324,
		 325,   326,   327,   328,   329,   330,   331,   332,   333,   334,
		 335,   336,   337,   338,   339,   340,   341,   342,   343,   344,
		 345,   346,   347,   348,   349,   350,   351,   352,   353,   354,
		 355,   356,   357,   358,   359,   360,   361,   362,   363,   364,
		 365,   366,   367,   368,   369,   370,   371,   372,   373,   374,
		 375,   376,   377,   378,   379,   380,   381,   382,   383,   384,
		 385,   386,   387,   388,   389,   390,   391,   392,   393,   394,
		 395,   396,   397,   398,   399,   400,   401,   402,   403,   404,
		 405,   406,   407,   408,   409,   410,   411,   412,   413,   414,
		 415,   416,   417,   418,   419,   420,   421,   422,   423,   424,
		 425,   426,   427,   428,   429,   430,   431,   432,   433,   434,
		 435,   436,   437,   438,   439,   440,   441,   442,   443,   444,
		 445,   446,   447,   448,   449,   450,    40,    41,    91,    93,
		  46,    44,    43,    45,    33,   126,    42,    47,    37,    60,
		  62,    38,    94,   124,    63,    58,    61,    59,   123,   125
	];
	*/

	/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
	var yyr1 = [
		   0,   220,   222,   221,   223,   223,   224,   224,   224,   224,
		 224,   225,   225,   226,   226,   226,   227,   228,   228,   229,
		 229,   230,   230,   230,   230,   230,   230,   231,   231,   231,
		 231,   231,   231,   232,   233,   234,   234,   235,   235,   236,
		 236,   237,   237,   238,   239,   239,   239,   240,   240,   241,
		 241,   242,   242,   243,   244,   244,   244,   244,   245,   245,
		 245,   245,   246,   246,   246,   246,   247,   247,   247,   248,
		 248,   248,   249,   249,   249,   249,   249,   250,   250,   250,
		 251,   251,   252,   252,   253,   253,   254,   254,   255,   255,
		 256,   256,   257,   257,   258,   258,   259,   259,   259,   259,
		 259,   259,   259,   259,   259,   259,   259,   260,   260,   261,
		 262,   262,   262,   263,   264,   264,   265,   265,   266,   267,
		 267,   268,   268,   268,   268,   269,   269,   269,   269,   270,
		 271,   271,   271,   271,   271,   271,   271,   272,   272,   272,
		 272,   272,   272,   272,   272,   273,   273,   274,   275,   275,
		 276,   276,   277,   277,   277,   278,   279,   279,   279,   279,
		 279,   279,   279,   279,   280,   280,   280,   280,   280,   280,
		 280,   280,   280,   281,   281,   282,   282,   282,   283,   283,
		 283,   284,   284,   284,   284,   284,   284,   284,   284,   284,
		 284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
		 284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
		 284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
		 284,   284,   284,   284,   284,   284,   284,   284,   284,   284,
		 284,   284,   285,   285,   285,   286,   286,   287,   287,   288,
		 289,   289,   290,   290,   291,   292,   293,   293,   294,   294,
		 294,   294,   294,   294,   294,   295,   296,   295,   297,   297,
		 298,   298,   299,   299,   300,   300,   301,   302,   302,   303,
		 303,   304,   305,   305,   306,   306,   306,   307,   307,   308,
		 308,   309,   309,   310,   310,   310,   310,   310,   311,   311,
		 311,   312
	];

	/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
	var yyr2 = [
		   0,     2,     0,     4,     0,     3,     2,     2,     2,     2,
		   2,     0,     2,     1,     1,     1,     5,     1,     2,     1,
		   1,     1,     1,     1,     1,     1,     3,     1,     4,     1,
		   3,     2,     2,     1,     1,     1,     3,     2,     2,     2,
		   1,     2,     3,     2,     1,     1,     1,     2,     2,     2,
		   1,     2,     3,     2,     1,     2,     2,     2,     1,     1,
		   1,     1,     1,     3,     3,     3,     1,     3,     3,     1,
		   3,     3,     1,     3,     3,     3,     3,     1,     3,     3,
		   1,     3,     1,     3,     1,     3,     1,     3,     1,     3,
		   1,     3,     1,     5,     1,     3,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     3,     1,
		   2,     2,     4,     2,     1,     1,     2,     3,     3,     2,
		   5,     3,     2,     3,     2,     0,     1,     1,     1,     1,
		   1,     3,     5,     6,     7,     8,     5,     1,     2,     4,
		   5,     6,     7,     4,     2,     1,     2,     4,     1,     3,
		   1,     3,     1,     1,     1,     1,     1,     1,     2,     1,
		   2,     2,     3,     1,     1,     1,     1,     2,     1,     1,
		   2,     2,     1,     1,     2,     1,     3,     4,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     5,     4,     1,     2,     3,
		   1,     3,     1,     4,     1,     1,     1,     1,     1,     1,
		   1,     1,     1,     1,     1,     2,     0,     4,     1,     1,
		   2,     3,     1,     2,     1,     2,     5,     3,     1,     1,
		   4,     5,     3,     2,     5,     7,     6,     1,     1,     1,
		   0,     2,     3,     2,     2,     2,     3,     2,     1,     1,
		   1,     2
	];

	/* YYDEFACT[STATE-NAME] -- Default rule to reduce with in state
	   STATE-NUM when YYTABLE doesn't specify something else to do.  Zero
	   means the default is an error.  */
	var yydefact = [
		   4,     0,     0,    11,     0,     1,     2,     5,     0,     0,
		  12,    13,    14,    15,     0,   165,   164,   185,   182,   183,
		 184,   189,   190,   191,   192,   193,   194,   195,   196,   197,
		 186,   187,   188,     0,   168,   169,   172,   166,   154,   153,
		 152,   198,   199,   200,   201,   202,   203,   204,   205,   206,
		 207,   208,   210,   211,   212,   213,   215,   216,   217,   218,
		 219,   220,   221,   222,   223,   224,   225,   226,   227,   228,
		 229,   230,   231,     0,   181,   180,   163,   234,   233,   232,
		   0,     0,     0,     0,     0,     0,     0,   209,   214,   290,
		   3,   289,     0,     0,   115,   125,     0,   130,   137,   157,
		 159,     0,   156,   145,   173,   175,   178,     0,   179,    17,
		 288,     0,   170,   171,   167,     0,     0,    19,    20,   144,
		   0,   161,     0,     6,     7,     8,     9,    10,     0,    18,
		 110,     0,   291,   113,   125,   155,   126,   127,   128,   116,
		   0,   125,     0,   111,    13,    15,   138,     0,   158,   160,
		 146,     0,   174,     0,     0,     0,   237,     0,   162,     0,
		 150,     0,   148,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    24,    22,    23,    25,    46,     0,
		   0,     0,    58,    59,    60,    61,   264,   256,   260,    21,
		  27,    54,    29,    34,    35,     0,     0,    40,     0,    62,
		   0,    66,    69,    72,    77,    80,    82,    84,    86,    88,
		  90,    92,    94,   107,     0,   245,     0,   145,   248,   262,
		 247,   246,     0,   249,   250,   251,   252,   253,   254,   117,
		 122,   124,   129,     0,   131,     0,     0,   118,   176,    62,
		 109,     0,    44,    16,   242,     0,   240,   236,   238,     0,
		 112,     0,   147,     0,   284,   283,     0,     0,     0,   287,
		 285,     0,     0,     0,   273,     0,    55,    56,     0,   255,
		   0,    31,    32,     0,     0,    38,    37,     0,   181,    41,
		  43,    97,    98,   100,    99,   102,   103,   104,   105,   106,
		 101,    96,     0,    57,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,   265,   261,   263,   119,   121,
		 123,     0,     0,   139,     0,   244,   143,   177,     0,     0,
		 239,   235,   151,   149,     0,   278,   277,   280,     0,   286,
		   0,   272,   163,   269,     0,     0,    26,     0,     0,    33,
		  30,     0,    36,     0,     0,    50,    42,    95,    63,    64,
		  65,    67,    68,    70,    71,    75,    76,    73,    74,    78,
		  79,    81,    83,    85,    87,    89,    91,     0,   108,     0,
		 132,     0,   136,     0,   140,     0,   241,     0,   279,     0,
		   0,     0,     0,     0,     0,   257,    28,    53,    48,    47,
		   0,   181,    51,     0,     0,     0,   133,   141,     0,   243,
		   0,   281,     0,   268,   266,   271,     0,   259,   274,   258,
		  52,    93,   120,   134,     0,   142,     0,   282,   276,     0,
		 270,   135,   275,   267
	];

	/* YYDEFGOTO[NTERM-NUM].  */
	var yydefgoto = [
		  -1,     2,     9,     3,    89,     6,   160,    10,    90,   189,
		 190,   191,   348,   192,   193,   194,   195,   196,   197,   198,
		 352,   353,   354,   355,   199,   200,   201,   202,   203,   204,
		 205,   206,   207,   208,   209,   210,   211,   212,   213,   292,
		 214,   241,   215,   216,    93,    94,    95,   230,   139,   140,
		 231,    96,    97,    98,    99,   161,   162,   100,   141,   101,
		 102,   242,   104,   105,   106,   107,   108,   155,   156,   245,
		 246,   326,   218,   219,   220,   221,   270,   418,   419,   222,
		 223,   224,   414,   345,   225,   226,   227,   337,   389,   390,
		 228,   109,   110
	];
	
	/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
	   STATE-NUM.  */
	var YYPACT_NINF = -366;
	var yypact = [
		 -57,   -43,    62,  -366,   -50,  -366,   -30,  -366,    67,  3341,
		-366,  -366,  -366,  -366,    -6,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,     8,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,   -65,  -366,  -366,   226,  -366,  -366,  -366,
		  51,   -31,   -28,     6,    13,    15,   -44,  -366,  -366,  -366,
		3341,  -366,  -183,   -47,   -29,    18,  -169,  -366,   140,    24,
		  24,  3460,  -366,  -366,  -366,   -24,  -366,  3533,  -366,  -366,
		-366,    67,  -366,  -366,  -366,  3460,   -48,  -366,  -366,  -366,
		  24,  -366,  3533,  -366,  -366,  -366,  -366,  -366,    67,  -366,
		-366,   408,  -366,  -366,    55,  -366,  -366,  -366,  -366,  -366,
		3460,   200,    67,  -366,   -20,   -18,  -178,    23,  -366,  -366,
		-366,  2225,  -366,    72,    67,  1598,  -366,  3460,  -366,     4,
		  10,   -84,  -366,    11,    14,  1059,    40,    42,    29,  1836,
		  43,  2783,    34,    54,  -366,  -366,  -366,  -366,  -366,  2783,
		2783,  2783,  -366,  -366,  -366,  -366,  -366,    32,  -366,    56,
		-366,   -71,  -366,  -366,  -366,    57,   -81,  2969,    61,   -27,
		2783,    35,   -88,   -41,   -70,    33,    60,    41,    59,   181,
		 180,   -89,  -366,  -366,  -168,  -366,    58,    80,  -366,  -366,
		-366,  -366,   625,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,    67,  3460,  -177,  2411,  2783,  -366,  -366,  -366,
		-366,    78,  -366,  -366,    81,  -137,  -366,  -366,  -366,  1717,
		-366,   201,  -366,    67,  -366,  -366,   205,  1478,  2783,  -366,
		-366,  -134,  2783,  -115,  -366,  2039,  -366,  -366,   -60,  -366,
		1059,  -366,  -366,  2783,   140,  -366,  -366,  2783,    85,  -366,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  2783,  -366,  2783,  2783,  2783,  2783,  2783,  2783,
		2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,  2783,
		2783,  2783,  2783,  2783,  2783,  -366,  -366,  -366,    86,  -366,
		-366,  2597,  2783,    69,    87,  -366,  -366,  -366,  2783,    67,
		-366,  -366,  -366,  -366,    91,  -366,  -366,  2039,   -59,  -366,
		 -46,  -366,   129,    88,    67,    93,  -366,   842,    89,    88,
		-366,    95,  -366,    96,   -37,  3155,  -366,  -366,  -366,  -366,
		-366,    35,    35,   -88,   -88,   -41,   -41,   -41,   -41,   -70,
		 -70,    33,    60,    41,    59,   181,   180,   -96,  -366,  2783,
		  76,    97,  -366,  2783,    79,    98,  -366,  2783,  -366,    77,
		 101,  1059,    83,    90,  1275,  -366,  -366,  -366,  -366,  -366,
		2783,   102,  -366,  2783,   108,  2783,    94,  -366,  2783,  -366,
		 -26,  2783,  1275,   297,  -366,  -366,  2783,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  2783,  -366,   100,    88,  -366,  1059,
		-366,  -366,  -366,  -366
	];

	/* YYPGOTO[NTERM-NUM].  */
	var yypgoto = [
		-366,  -366,  -366,  -366,  -366,  -366,    -7,  -366,  -366,   -62,
		-366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,  -366,  -366,  -366,  -101,  -366,  -113,  -109,  -121,   -61,
		   5,     3,     9,    16,     2,     7,  -366,  -142,  -100,  -366,
		-164,  -225,    21,    22,  -366,  -366,  -366,    82,   186,   173,
		  92,  -366,  -366,  -242,  -366,  -366,    68,   -73,  -366,  -366,
		 -74,    -9,   -67,  -366,  -366,   243,  -366,   170,  -147,  -366,
		   0,  -298,    73,  -159,  -365,   -58,  -366,   -80,   239,    63,
		  84,  -366,  -366,    -2,  -366,  -366,  -366,  -366,  -366,  -366,
		-366,   246,  -366
	];

	/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
	   positive, shift that token.  If negative, reduce the rule which
	   number is the opposite.  If zero, do what YYDEFACT says.
	   If YYTABLE_NINF, syntax error.  */
	var YYTABLE_NINF = -115;
	var yytable = [
		 103,    14,   121,   120,   312,   261,   256,   263,   248,   240,
		 324,    11,    12,    13,   119,   271,   272,   268,   301,   302,
		 235,   321,   135,   344,   382,   148,   149,    15,    16,   417,
		  91,    92,   142,   314,   130,   131,   147,     4,   236,   322,
		 152,   112,   113,   299,   300,   114,   158,   417,   143,   315,
		 239,   136,   137,   138,     1,   159,    33,    34,    35,   135,
		  36,    37,     5,   317,   329,     7,   116,   314,   281,   282,
		 283,   284,   285,   286,   287,   288,   289,   290,   266,   267,
		 330,   103,     8,   339,   123,   407,   314,   124,   136,   137,
		 138,   146,   150,   240,   338,   344,   381,   279,   340,   293,
		 341,   343,   248,   385,   153,   314,   154,   423,   111,   349,
		 425,    91,    92,   252,   297,   298,   276,   253,   430,   403,
		 277,   125,   217,   305,   306,   313,   431,   273,   126,   274,
		 127,   232,    15,    16,   239,   234,   325,   346,   391,   303,
		 304,   314,   314,    11,    12,    13,   154,   244,   154,   377,
		 133,   392,   128,   115,   404,   314,   217,    77,    78,    79,
		 399,    33,    34,    35,   400,    36,    37,    38,    39,    40,
		 157,   426,   134,   343,   151,   314,   -19,   356,   -20,   240,
		 365,   366,   367,   368,   361,   362,   240,   243,   317,   291,
		 363,   364,   357,   358,   359,   360,   239,   239,   239,   239,
		 239,   239,   239,   239,   239,   239,   239,   239,   239,   239,
		 239,   239,   351,   217,   378,  -114,   144,    12,   145,   237,
		 239,   250,   325,   410,   232,   318,   251,   239,   254,    15,
		  16,   255,   413,   136,   137,   138,   257,   240,   258,   262,
		 154,   294,   295,   296,   369,   370,   259,   427,   217,   264,
		 265,   269,   -45,   308,   275,   402,   217,   280,    33,    34,
		  35,   217,    36,    37,    38,    39,    40,   350,   121,   120,
		 433,   307,   309,   310,   311,   130,   -44,   327,   239,   328,
		 334,   332,   -39,   325,   379,   383,   384,   387,   396,   314,
		 394,   397,   405,   398,   411,   408,   406,   409,   412,   -49,
		 420,   187,   117,   421,   118,   325,   416,   422,   325,   429,
		 424,   372,   371,   375,   233,   319,   325,   432,   373,   376,
		 229,   333,   244,   122,   325,   320,   374,   249,   217,   386,
		 335,   132,   428,   347,   415,   388,   129,   393,   217,     0,
		   0,   336,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,   217,     0,     0,   217,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,   217,     0,     0,     0,     0,     0,     0,
		   0,    15,    16,    17,    18,    19,    20,   163,   164,   165,
		 217,   166,   167,   168,   169,   170,   171,   172,    21,    22,
		  23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
		  33,    34,    35,     0,    36,    37,    38,    39,    40,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,   173,   117,    75,   118,   174,   175,   176,
		 177,   178,     0,     0,   179,   180,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,    76,    77,    78,    79,     0,    80,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,    86,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,    87,     0,    88,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,   181,     0,     0,     0,     0,     0,
		 182,   183,   184,   185,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,   186,   187,   188,    15,    16,
		  17,    18,    19,    20,   163,   164,   165,     0,   166,   167,
		 168,   169,   170,   171,   172,    21,    22,    23,    24,    25,
		  26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
		   0,    36,    37,    38,    39,    40,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		 173,   117,    75,   118,   174,   175,   176,   177,   178,     0,
		   0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  76,    77,    78,    79,     0,    80,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    86,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
		 185,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,   186,   187,   316,    15,    16,    17,    18,    19,
		  20,   163,   164,   165,     0,   166,   167,   168,   169,   170,
		 171,   172,    21,    22,    23,    24,    25,    26,    27,    28,
		  29,    30,    31,    32,    33,    34,    35,     0,    36,    37,
		  38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
		  48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
		  58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
		  68,    69,    70,    71,    72,    73,    74,   173,   117,    75,
		 118,   174,   175,   176,   177,   178,     0,     0,   179,   180,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,    76,    77,    78,
		  79,     0,    80,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,    86,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,    87,
		   0,    88,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,   181,     0,
		   0,     0,     0,     0,   182,   183,   184,   185,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,   186,
		 187,   395,    15,    16,    17,    18,    19,    20,   163,   164,
		 165,     0,   166,   167,   168,   169,   170,   171,   172,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  32,    33,    34,    35,     0,    36,    37,    38,    39,    40,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,    74,   173,   117,    75,   118,   174,   175,
		 176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    76,    77,    78,    79,     0,    80,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,   181,     0,     0,     0,     0,
		   0,   182,   183,   184,   185,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,   186,   187,    15,    16,
		  17,    18,    19,    20,   163,   164,   165,     0,   166,   167,
		 168,   169,   170,   171,   172,    21,    22,    23,    24,    25,
		  26,    27,    28,    29,    30,    31,    32,    33,    34,    35,
		   0,    36,    37,    38,    39,    40,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		 173,   117,    75,   118,   174,   175,   176,   177,   178,     0,
		   0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  76,    77,    78,    79,     0,    80,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    86,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
		 185,    15,    16,    17,    18,    19,    20,     0,     0,     0,
		   0,     0,   186,   131,     0,     0,     0,     0,    21,    22,
		  23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
		  33,    34,    35,     0,    36,    37,    38,    39,    40,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,     0,   117,    75,   118,   174,   175,   176,
		 177,   178,     0,     0,   179,   180,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,    76,    77,    78,    79,     0,    80,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,    86,     0,    17,    18,    19,    20,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    21,    22,
		  23,    24,    25,    26,    27,    28,    29,    30,    31,    32,
		   0,     0,     0,     0,     0,    87,     0,    88,     0,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,     0,   181,    75,     0,     0,     0,     0,
		 182,   183,   184,   185,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,   186,     0,     0,     0,     0,
		   0,     0,     0,     0,    77,    78,    79,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    17,    18,    19,    20,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,    21,    22,    23,
		  24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
		   0,     0,     0,     0,     0,    87,     0,    88,    41,    42,
		  43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
		  53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
		  63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
		  73,    74,     0,     0,    75,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,   247,     0,     0,
		   0,     0,     0,    77,    78,    79,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,    17,    18,    19,    20,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    32,     0,     0,
		   0,     0,     0,     0,    87,     0,    88,    41,    42,    43,
		  44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
		  54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
		  64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
		  74,     0,   117,    75,   118,   174,   175,   176,   177,   178,
		   0,     0,   179,   180,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,   331,     0,     0,     0,
		   0,     0,    77,    78,    79,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,    87,     0,    88,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,   181,     0,     0,     0,     0,     0,   182,   183,
		 184,   185,    15,    16,    17,    18,    19,    20,     0,     0,
		   0,     0,     0,   260,     0,     0,     0,     0,     0,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  32,    33,    34,    35,     0,    36,    37,    38,    39,    40,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,    74,     0,   117,    75,   118,   174,   175,
		 176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,   342,    77,    78,    79,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    86,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  17,    18,    19,    20,     0,   181,     0,     0,     0,     0,
		   0,   182,   183,   184,   185,    21,    22,    23,    24,    25,
		  26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		   0,   117,    75,   118,   174,   175,   176,   177,   178,     0,
		   0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    17,    18,    19,    20,
		   0,   181,     0,     0,   238,     0,     0,   182,   183,   184,
		 185,    21,    22,    23,    24,    25,    26,    27,    28,    29,
		  30,    31,    32,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    41,    42,    43,    44,    45,    46,    47,    48,
		  49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
		  59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
		  69,    70,    71,    72,    73,    74,     0,   117,    75,   118,
		 174,   175,   176,   177,   178,     0,     0,   179,   180,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,    77,    78,    79,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    87,     0,
		  88,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    17,    18,    19,    20,     0,   181,     0,     0,
		 323,     0,     0,   182,   183,   184,   185,    21,    22,    23,
		  24,    25,    26,    27,    28,    29,    30,    31,    32,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    41,    42,
		  43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
		  53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
		  63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
		  73,    74,     0,   117,    75,   118,   174,   175,   176,   177,
		 178,     0,     0,   179,   180,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,    77,    78,    79,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    87,     0,    88,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,    17,    18,
		  19,    20,     0,   181,     0,     0,   380,     0,     0,   182,
		 183,   184,   185,    21,    22,    23,    24,    25,    26,    27,
		  28,    29,    30,    31,    32,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
		  47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
		  57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
		  67,    68,    69,    70,    71,    72,    73,    74,     0,   117,
		  75,   118,   174,   175,   176,   177,   178,     0,     0,   179,
		 180,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,    77,
		  78,    79,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  87,     0,    88,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    17,    18,    19,    20,     0,   181,
		   0,     0,     0,     0,     0,   182,   183,   184,   185,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  32,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,   278,     0,   117,    75,   118,   174,   175,
		 176,   177,   178,     0,     0,   179,   180,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,    77,    78,    79,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    87,     0,    88,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  17,    18,    19,    20,     0,   181,     0,     0,     0,     0,
		   0,   182,   183,   184,   185,    21,    22,    23,    24,    25,
		  26,    27,    28,    29,    30,    31,    32,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,   401,
		   0,   117,    75,   118,   174,   175,   176,   177,   178,     0,
		   0,   179,   180,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,    77,    78,    79,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
	
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,    87,     0,    88,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,    15,    16,    17,    18,    19,    20,
		   0,   181,     0,     0,     0,     0,     0,   182,   183,   184,
		 185,    21,    22,    23,    24,    25,    26,    27,    28,    29,
		  30,    31,    32,    33,    34,    35,     0,    36,    37,    38,
		  39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
		  49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
		  59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
		  69,    70,    71,    72,    73,    74,     0,     0,    75,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,    76,    77,    78,    79,
		   0,    80,     0,     0,     0,     0,     0,     0,     0,    81,
		  82,    83,    84,    85,    86,    17,    18,    19,    20,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
		  31,    32,     0,     0,     0,     0,     0,     0,    87,     0,
		  88,    41,    42,    43,    44,    45,    46,    47,    48,    49,
		  50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
		  60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
		  70,    71,    72,    73,    74,     0,     0,    75,    17,    18,
		  19,    20,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,    21,    22,    23,    24,    25,    26,    27,
		  28,    29,    30,    31,    32,     0,    77,    78,    79,     0,
		   0,     0,     0,     0,    41,    42,    43,    44,    45,    46,
		  47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
		  57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
		  67,    68,    69,    70,    71,    72,    73,    74,     0,     0,
		  75,     0,     0,     0,     0,     0,     0,    87,     0,    88,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		   0,     0,     0,     0,     0,     0,     0,     0,     0,     0,
		  87,     0,    88
	];
	
	var yycheck = [
		   9,     8,    76,    76,    93,   169,   165,   171,   155,   151,
		 235,    76,    77,    78,    76,    86,    87,   181,    88,    89,
		 198,   198,     4,   265,   322,    99,   100,     3,     4,   394,
		   9,     9,   201,   201,   217,   218,    98,    80,   216,   216,
		 107,    33,    34,    84,    85,    37,   120,   412,   217,   217,
		 151,    33,    34,    35,   111,   122,    32,    33,    34,     4,
		  36,    37,     0,   222,   201,   115,    73,   201,    95,    96,
		  97,    98,    99,   100,   101,   102,   103,   104,   179,   180,
		 217,    90,   112,   217,   115,   383,   201,   115,    33,    34,
		  35,    98,   101,   235,   258,   337,   321,   197,   262,   200,
		 215,   265,   249,   328,   111,   201,   115,   405,   114,   273,
		 408,    90,    90,   197,   202,   203,   197,   201,   416,   215,
		 201,   115,   131,    90,    91,   214,   424,   198,   115,   200,
		 115,   140,     3,     4,   235,   142,   236,   197,   197,   209,
		 210,   201,   201,    76,    77,    78,   155,   154,   157,   313,
		 197,   197,   196,   218,   379,   201,   165,   106,   107,   108,
		 197,    32,    33,    34,   201,    36,    37,    38,    39,    40,
		 218,   197,   201,   337,   198,   201,   196,   277,   196,   321,
		 301,   302,   303,   304,   297,   298,   328,   115,   347,   216,
		 299,   300,   292,   294,   295,   296,   297,   298,   299,   300,
		 301,   302,   303,   304,   305,   306,   307,   308,   309,   310,
		 311,   312,   274,   222,   314,   197,    76,    77,    78,   196,
		 321,   217,   322,   387,   233,   232,   216,   328,   217,     3,
		   4,   217,   391,    33,    34,    35,   196,   379,   196,   196,
		 249,   206,   207,   208,   305,   306,   217,   411,   257,   215,
		 196,   219,   196,   212,   197,   355,   265,   196,    32,    33,
		  34,   270,    36,    37,    38,    39,    40,   274,   342,   342,
		 429,   211,   213,    92,    94,   217,   196,   199,   379,   198,
		  75,    80,   197,   383,   198,   216,   199,   196,   199,   201,
		 197,   196,   216,   197,   217,   216,   199,   199,   197,   197,
		 400,   218,    76,   403,    78,   405,   216,   199,   408,    12,
		 216,   308,   307,   311,   141,   233,   416,   217,   309,   312,
		 134,   253,   329,    80,   424,   233,   310,   157,   337,   329,
		 257,    92,   412,   270,   392,   337,    90,   344,   347,    -1,
		  -1,   257,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   391,    -1,    -1,   394,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,   412,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,     3,     4,     5,     6,     7,     8,     9,    10,    11,
		 429,    13,    14,    15,    16,    17,    18,    19,    20,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,    75,    76,    77,    78,    79,    80,    81,
		  82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,
		 202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   217,   218,   219,     3,     4,
		   5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
		  15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
		  -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		  75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
		  -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		 105,   106,   107,   108,    -1,   110,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
		 205,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   217,   218,   219,     3,     4,     5,     6,     7,
		   8,     9,    10,    11,    -1,    13,    14,    15,    16,    17,
		  18,    19,    20,    21,    22,    23,    24,    25,    26,    27,
		  28,    29,    30,    31,    32,    33,    34,    -1,    36,    37,
		  38,    39,    40,    41,    42,    43,    44,    45,    46,    47,
		  48,    49,    50,    51,    52,    53,    54,    55,    56,    57,
		  58,    59,    60,    61,    62,    63,    64,    65,    66,    67,
		  68,    69,    70,    71,    72,    73,    74,    75,    76,    77,
		  78,    79,    80,    81,    82,    83,    -1,    -1,    86,    87,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,
		 108,    -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   123,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,
		  -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   196,    -1,
		  -1,    -1,    -1,    -1,   202,   203,   204,   205,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   217,
		 218,   219,     3,     4,     5,     6,     7,     8,     9,    10,
		  11,    -1,    13,    14,    15,    16,    17,    18,    19,    20,
		  21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
		  31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,    74,    75,    76,    77,    78,    79,    80,
		  81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   196,    -1,    -1,    -1,    -1,
		  -1,   202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   217,   218,     3,     4,
		   5,     6,     7,     8,     9,    10,    11,    -1,    13,    14,
		  15,    16,    17,    18,    19,    20,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    32,    33,    34,
		  -1,    36,    37,    38,    39,    40,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		  75,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
		  -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		 105,   106,   107,   108,    -1,   110,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   123,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
		 205,     3,     4,     5,     6,     7,     8,    -1,    -1,    -1,
		  -1,    -1,   217,   218,    -1,    -1,    -1,    -1,    20,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  32,    33,    34,    -1,    36,    37,    38,    39,    40,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,    -1,    76,    77,    78,    79,    80,    81,
		  82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,   105,   106,   107,   108,    -1,   110,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   123,    -1,     5,     6,     7,     8,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,
		  22,    23,    24,    25,    26,    27,    28,    29,    30,    31,
		  -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    41,
		  42,    43,    44,    45,    46,    47,    48,    49,    50,    51,
		  52,    53,    54,    55,    56,    57,    58,    59,    60,    61,
		  62,    63,    64,    65,    66,    67,    68,    69,    70,    71,
		  72,    73,    74,    -1,   196,    77,    -1,    -1,    -1,    -1,
		 202,   203,   204,   205,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,
		  23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
		  -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    41,    42,
		  43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
		  53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
		  63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
		  73,    74,    -1,    -1,    77,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,   219,    -1,    -1,
		  -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,     5,     6,     7,     8,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    20,    21,    22,    23,
		  24,    25,    26,    27,    28,    29,    30,    31,    -1,    -1,
		  -1,    -1,    -1,    -1,   157,    -1,   159,    41,    42,    43,
		  44,    45,    46,    47,    48,    49,    50,    51,    52,    53,
		  54,    55,    56,    57,    58,    59,    60,    61,    62,    63,
		  64,    65,    66,    67,    68,    69,    70,    71,    72,    73,
		  74,    -1,    76,    77,    78,    79,    80,    81,    82,    83,
		  -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   219,    -1,    -1,    -1,
		  -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,
		 204,   205,     3,     4,     5,     6,     7,     8,    -1,    -1,
		  -1,    -1,    -1,   217,    -1,    -1,    -1,    -1,    -1,    20,
		  21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
		  31,    32,    33,    34,    -1,    36,    37,    38,    39,    40,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,    74,    -1,    76,    77,    78,    79,    80,
		  81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,   105,   106,   107,   108,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   123,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		   5,     6,     7,     8,    -1,   196,    -1,    -1,    -1,    -1,
		  -1,   202,   203,   204,   205,    20,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		  -1,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
		  -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,     5,     6,     7,     8,
		  -1,   196,    -1,    -1,   199,    -1,    -1,   202,   203,   204,
		 205,    20,    21,    22,    23,    24,    25,    26,    27,    28,
		  29,    30,    31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    41,    42,    43,    44,    45,    46,    47,    48,
		  49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
		  59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
		  69,    70,    71,    72,    73,    74,    -1,    76,    77,    78,
		  79,    80,    81,    82,    83,    -1,    -1,    86,    87,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,   107,   108,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
		 159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,     5,     6,     7,     8,    -1,   196,    -1,    -1,
		 199,    -1,    -1,   202,   203,   204,   205,    20,    21,    22,
		  23,    24,    25,    26,    27,    28,    29,    30,    31,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    41,    42,
		  43,    44,    45,    46,    47,    48,    49,    50,    51,    52,
		  53,    54,    55,    56,    57,    58,    59,    60,    61,    62,
		  63,    64,    65,    66,    67,    68,    69,    70,    71,    72,
		  73,    74,    -1,    76,    77,    78,    79,    80,    81,    82,
		  83,    -1,    -1,    86,    87,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,   106,   107,   108,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,   157,    -1,   159,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,     5,     6,
		   7,     8,    -1,   196,    -1,    -1,   199,    -1,    -1,   202,
		 203,   204,   205,    20,    21,    22,    23,    24,    25,    26,
		  27,    28,    29,    30,    31,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,    46,
		  47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
		  57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
		  67,    68,    69,    70,    71,    72,    73,    74,    -1,    76,
		  77,    78,    79,    80,    81,    82,    83,    -1,    -1,    86,
		  87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   106,
		 107,   108,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		 157,    -1,   159,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,     5,     6,     7,     8,    -1,   196,
		  -1,    -1,    -1,    -1,    -1,   202,   203,   204,   205,    20,
		  21,    22,    23,    24,    25,    26,    27,    28,    29,    30,
		  31,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  41,    42,    43,    44,    45,    46,    47,    48,    49,    50,
		  51,    52,    53,    54,    55,    56,    57,    58,    59,    60,
		  61,    62,    63,    64,    65,    66,    67,    68,    69,    70,
		  71,    72,    73,    74,    -1,    76,    77,    78,    79,    80,
		  81,    82,    83,    -1,    -1,    86,    87,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,   106,   107,   108,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		   5,     6,     7,     8,    -1,   196,    -1,    -1,    -1,    -1,
		  -1,   202,   203,   204,   205,    20,    21,    22,    23,    24,
		  25,    26,    27,    28,    29,    30,    31,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    41,    42,    43,    44,
		  45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
		  55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
		  65,    66,    67,    68,    69,    70,    71,    72,    73,    74,
		  -1,    76,    77,    78,    79,    80,    81,    82,    83,    -1,
		  -1,    86,    87,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,   106,   107,   108,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,   157,    -1,   159,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,     3,     4,     5,     6,     7,     8,
		  -1,   196,    -1,    -1,    -1,    -1,    -1,   202,   203,   204,
		 205,    20,    21,    22,    23,    24,    25,    26,    27,    28,
		  29,    30,    31,    32,    33,    34,    -1,    36,    37,    38,
		  39,    40,    41,    42,    43,    44,    45,    46,    47,    48,
		  49,    50,    51,    52,    53,    54,    55,    56,    57,    58,
		  59,    60,    61,    62,    63,    64,    65,    66,    67,    68,
		  69,    70,    71,    72,    73,    74,    -1,    -1,    77,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,   105,   106,   107,   108,
		  -1,   110,    -1,    -1,    -1,    -1,    -1,    -1,    -1,   118,
		 119,   120,   121,   122,   123,     5,     6,     7,     8,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  20,    21,    22,    23,    24,    25,    26,    27,    28,    29,
		  30,    31,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,
		 159,    41,    42,    43,    44,    45,    46,    47,    48,    49,
		  50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
		  60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
		  70,    71,    72,    73,    74,    -1,    -1,    77,     5,     6,
		   7,     8,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    20,    21,    22,    23,    24,    25,    26,
		  27,    28,    29,    30,    31,    -1,   106,   107,   108,    -1,
		  -1,    -1,    -1,    -1,    41,    42,    43,    44,    45,    46,
		  47,    48,    49,    50,    51,    52,    53,    54,    55,    56,
		  57,    58,    59,    60,    61,    62,    63,    64,    65,    66,
		  67,    68,    69,    70,    71,    72,    73,    74,    -1,    -1,
		  77,    -1,    -1,    -1,    -1,    -1,    -1,   157,    -1,   159,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		  -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1,
		 157,    -1,   159
	];

	/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
	   symbol of state STATE-NUM.  */
	var yystos = [
		   0,   111,   221,   223,    80,     0,   225,   115,   112,   222,
		 227,    76,    77,    78,   226,     3,     4,     5,     6,     7,
		   8,    20,    21,    22,    23,    24,    25,    26,    27,    28,
		  29,    30,    31,    32,    33,    34,    36,    37,    38,    39,
		  40,    41,    42,    43,    44,    45,    46,    47,    48,    49,
		  50,    51,    52,    53,    54,    55,    56,    57,    58,    59,
		  60,    61,    62,    63,    64,    65,    66,    67,    68,    69,
		  70,    71,    72,    73,    74,    77,   105,   106,   107,   108,
		 110,   118,   119,   120,   121,   122,   123,   157,   159,   224,
		 228,   262,   263,   264,   265,   266,   271,   272,   273,   274,
		 277,   279,   280,   281,   282,   283,   284,   285,   286,   311,
		 312,   114,    33,    34,    37,   218,   226,    76,    78,   229,
		 277,   280,   285,   115,   115,   115,   115,   115,   196,   311,
		 217,   218,   298,   197,   201,     4,    33,    34,    35,   268,
		 269,   278,   201,   217,    76,    78,   226,   229,   280,   280,
		 281,   198,   282,   226,   281,   287,   288,   218,   280,   282,
		 226,   275,   276,     9,    10,    11,    13,    14,    15,    16,
		  17,    18,    19,    75,    79,    80,    81,    82,    83,    86,
		  87,   196,   202,   203,   204,   205,   217,   218,   219,   229,
		 230,   231,   233,   234,   235,   236,   237,   238,   239,   244,
		 245,   246,   247,   248,   249,   250,   251,   252,   253,   254,
		 255,   256,   257,   258,   260,   262,   263,   281,   292,   293,
		 294,   295,   299,   300,   301,   304,   305,   306,   310,   268,
		 267,   270,   281,   269,   226,   198,   216,   196,   199,   244,
		 257,   261,   281,   115,   226,   289,   290,   219,   288,   287,
		 217,   216,   197,   201,   217,   217,   293,   196,   196,   217,
		 217,   260,   196,   260,   215,   196,   244,   244,   260,   219,
		 296,    86,    87,   198,   200,   197,   197,   201,    74,   258,
		 196,    95,    96,    97,    98,    99,   100,   101,   102,   103,
		 104,   216,   259,   244,   206,   207,   208,   202,   203,    84,
		  85,    88,    89,   209,   210,    90,    91,   211,   212,   213,
		  92,    94,    93,   214,   201,   217,   219,   293,   226,   267,
		 270,   198,   216,   199,   261,   258,   291,   199,   198,   201,
		 217,   219,    80,   276,    75,   292,   300,   307,   260,   217,
		 260,   215,   105,   260,   273,   303,   197,   299,   232,   260,
		 226,   229,   240,   241,   242,   243,   258,   258,   244,   244,
		 244,   246,   246,   247,   247,   248,   248,   248,   248,   249,
		 249,   250,   251,   252,   253,   254,   255,   260,   258,   198,
		 199,   261,   291,   216,   199,   261,   290,   196,   303,   308,
		 309,   197,   197,   226,   197,   219,   199,   196,   197,   197,
		 201,    74,   258,   215,   261,   216,   199,   291,   216,   199,
		 260,   217,   197,   293,   302,   295,   216,   294,   297,   298,
		 258,   258,   199,   291,   216,   291,   197,   260,   297,    12,
		 291,   291,   217,   293
	];

	var YYEMPTY = (-2);
	var YYEOF = 0;

	var YYTERROR = 1;
	var YYERRCODE = 256;

	/* YYLLOC_DEFAULT -- Set CURRENT to span from RHS[1] to RHS[N].
	   If N is 0, then set CURRENT to the empty location which ends
	   the previous symbol: RHS[0] (always defined).  */

	function YYLLOC_DEFAULT(Current, Rhs, i, N) {
		if (N) {
			(Current).first_line   = Rhs[1 + i].first_line;
			(Current).first_column = Rhs[1 + i].first_column;
			(Current).last_line    = Rhs[N + i].last_line;
			(Current).last_column  = Rhs[N + i].last_column;
		} else {
			(Current).first_line   = (Current).last_line   =
				Rhs[i].last_line;
			(Current).first_column = (Current).last_column =
			Rhs[i].last_column;
		}
	}

	/* YY_LOCATION_PRINT -- Print the location on the stream.
	   This macro was not mandated originally: define only if we know
	   we won't break user code: when these are the locations we know.  */

	function YY_LOCATION_PRINT(File, Loc) {
		glsl.fprintf(File, "%d.%d-%d.%d", Loc.first_line, Loc.first_column, Loc.last_line, Loc.last_column);
	}

	/*IF DEBUG
	var YYDPRINTF = function() {
		if (yydebug) {
			glsl.fprintf.apply(null, arguments);
		}
	};
	*/

	function YY_SYMBOL_PRINT(Title, Type, Value, Location) {
		if (yydebug) {
			glsl.fprintf(2, "%s ", Title);
			yy_symbol_print(2, Type, Value, Location);
			glsl.fprintf(2, "\n");
		}
	}

	/*IF DEBUG
	//---------------------------------
	// Print this symbol on YYOUTPUT.  |
	//---------------------------------

	var yy_symbol_value_print = function(yyoutput, yytype, yyvaluep, yylocationp) {
		if (!yyvaluep) {
			return;
		}
		if (YYPRINT) {
			if (yytype < YYNTOKENS) {
				YYPRINT(yyoutput, yytoknum[yytype], yyvaluep);
			}
		}
	}

	//---------------------------------
	// Print this symbol on YYOUTPUT.  |
	//---------------------------------

	var yy_symbol_print = function(yyoutput, yytype, yyvaluep, yylocationp) {
		if (yytype < YYNTOKENS) {
			glsl.fprintf(yyoutput, "token %s (", yytname[yytype]);
		} else {
			glsl.fprintf(yyoutput, "nterm %s (", yytname[yytype]);
		}

		YY_LOCATION_PRINT(yyoutput, yylocationp);
		if (yyvaluep && yytype < YYNTOKENS) {
			glsl.fprintf(yyoutput, ": ");
			yy_symbol_value_print(yyoutput, yytype, yyvaluep, yylocationp);
		}
		glsl.fprintf(yyoutput, ")");
	};

	//-------------------------------------------------------------------
	// yy_stack_print -- Print the state stack from its BOTTOM up to its |
	// TOP (included).                                                   |
	//-------------------------------------------------------------------
	var yy_stack_print = function(yystack, yybottom, yytop) {
		glsl.fprintf(2, "Stack now");
		for (; yybottom <= yytop; yybottom++) {
			var yybot = yybottom;
			glsl.fprintf(2, " %d", yystack[yybot]);
		}
		glsl.fprintf(2, "\n");
	};

	var YY_STACK_PRINT = function(Stack, Bottom, Top) {
		if (yydebug) {
			yy_stack_print((Stack), (Bottom), (Top));	
		}
	};
	*/

	/* YYINITDEPTH -- initial size of the parser's stacks.  */
	var YYINITDEPTH = 200;

	/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only
	   if the built-in stack extension method is used).
	
	   Do not make this value too large; the results are undefined if
	   YYSTACK_ALLOC_MAXIMUM < YYSTACK_BYTES (YYMAXDEPTH)
	   evaluated with infinite-precision integer arithmetic.  */
	
	var YYMAXDEPTH = 10000;

	/* Copy to YYRES the contents of YYSTR after stripping away unnecessary
	quotes and backslashes, so that it's suitable for yyerror.  The
	heuristic is that double-quoting is unnecessary unless the string
	contains an apostrophe, a comma, or backslash (other than
	backslash-backslash).  YYSTR is taken from yytname.  If YYRES is
	null, do not copy; instead, return the length of what the result
	would have been.  */
	var yytnamerr = function(yyres, yystr) {};

	/* Copy into YYRESULT an error message about the unexpected token
	YYCHAR while in state YYSTATE.  Return the number of bytes copied,
	including the terminating null byte.  If YYRESULT is null, do not
	copy anything; just return the number of bytes that would be
	copied.  As a special case, return 0 if an ordinary "syntax error"
	message will do.  Return YYSIZE_MAXIMUM if overflow occurs during
	size calculation.  */
	function yysyntax_error(yystate, yychar) {
		var yyx, yyn;

		yyn = yypact[yystate];
		if (!(YYPACT_NINF < yyn && yyn <= YYLAST)) {
			return '';
		} else {
			var yytype = YYTRANSLATE(yychar);

			var YYERROR_VERBOSE_ARGS_MAXIMUM = 5;

			var yyunexpected = "syntax error, unexpected %s";
			var yyexpecting = ", expecting %s";
			var yyor = " or %s";

			var yyprefix = yyexpecting;

			/* Start YYX at -YYN if negative to avoid negative indexes in
			YYCHECK.  */
			var yyxbegin = yyn < 0 ? -yyn : 0;

			/* Stay within bounds of both yycheck and yytname.  */
			var yychecklim = YYLAST - yyn + 1;
			var yyxend = yychecklim < YYNTOKENS ? yychecklim : YYNTOKENS;

			var yyresult = glsl.sprintf(yyunexpected, yytname[yytype]);

			var yycount = 1;
			for (yyx = yyxbegin; yyx < yyxend; ++yyx) {
				if (yycheck[yyx + yyn] == yyx && yyx != YYTERROR) {
					if (yycount == YYERROR_VERBOSE_ARGS_MAXIMUM) {
						break;
					}
					yyresult += glsl.sprintf(yyprefix, yytname[yyx]);
					yyprefix = yyor;
				}
			}

			return yyresult;
		}
	}

	/*-----------------------------------------------.
	| Release the memory associated to this symbol.  |
	`-----------------------------------------------*/
	
	var	yydestruct = function(yymsg, yytype, yyvaluep, yylocationp, state) {
		if (!yymsg) {
			yymsg = "Deleting";
		}
		/*IF DEBUG
		YY_SYMBOL_PRINT(yymsg, yytype, yyvaluep, yylocationp);	
		*/
	};


	function yyparse(state) {
		var i;
		
		/* The lookahead symbol.  */
		var yychar = 0;
		/* The semantic value of the lookahead symbol.  */
		var yylval = {};
		/* Location data for the lookahead symbol.  */
		var yylloc = YYLTYPE();
		/* Number of syntax errors so far.  */
		var yynerrs = 0;

		var yystate = 0;

		/* Number of tokens to shift before error messages enabled.  */
		var yyerrstatus = 0;

		/* The state stack.  */
		var yyssa = new Array(YYINITDEPTH); for (i = 0; i < yyssa.length; i++) { yyssa[i] = 0; }
		var yyss = 0;
		var yyssp = 0;
		
		/* The semantic value stack.  */
		var yyvsa = new Array(YYINITDEPTH); for (i = 0; i < yyvsa.length; i++) { yyvsa[i] = {}; }
		var yyvs = {};
		var yyvsp = {};
		
		/* The location stack.  */
		var yylsa = new Array(YYINITDEPTH); for (i = 0; i < yylsa.length; i++) { yylsa[i] = YYLTYPE(); }
		var yyls = 0;
		var yylsp = 0;

		/* The locations where the error started and ended.  */
		var yyerror_range = new Array(3); for (i = 0; i < yyerror_range.length; i++) { yyerror_range[i] = YYLTYPE(); }

		var yystacksize = 0;

		var yyn = 0;
		var yyresult = 0;
		/* Lookahead token as an internal (translated) token number.  */
		var yytoken = 0;
		/* The variables used to return semantic value and location from the
		 action routines.  */
		var yyval = {};
		var yyloc = YYLTYPE();

		/*IF YYERROR_VERBOSE
		// Buffer for error messages, and its allocated size.
		var yymsg;
		*/
		
		var YYPOPSTACK = function(N) { yyvsp -= (N); yyssp -= (N); yylsp -= (N); };

		  /* The number of symbols on the RHS of the reduced rule.
			 Keep to zero when no symbol should be popped.  */
		var yylen = 0;

		yytoken = 0;
		yyss = 0;
		yyvs = 0;
		yyls = 0;
		yystacksize = YYINITDEPTH;
		
		/*IF DEBUG
		YYDPRINTF(2, "Starting parse\n");
		*/

		yystate = 0;
		yyerrstatus = 0;
		yynerrs = 0;
		yychar = YYEMPTY; /* Cause a token to be read.  */

		/* Initialize stack pointers.
		 Waste one element of value and location stack
		 so that they stay on the same level as the state stack.
		 The wasted elements are never initialized.  */
		yyssp = yyss;
		yyvsp = yyvs;
		yylsp = yyls;

		/* User initialization code.  */
		yylloc.first_line = 1;
		yylloc.first_column = 1;
		yylloc.last_line = 1;
		yylloc.last_column = 1;
		yylloc.source = 0;

		yylsa[0] = yylloc;

		var _goto = '';

		while (true) {
		switch (_goto) {
			case '':
			/*------------------------------------------------------------.
			| yynewstate -- Push a new state, which is found in yystate.  |
			`------------------------------------------------------------*/
			case 'yynewstate':
				/* In all cases, when you get here, the value and location stacks
				 have just been pushed.  So pushing a state here evens the stacks.  */
				yyssp++;
			
			/*------------------------------------------------------------.
			| yynewstate -- Push a new state, which is found in yystate.  |
			`------------------------------------------------------------*/
			case 'yysetstate':
				yyssa[yyssp] = yystate;

				if (yyss + yystacksize - 1 <= yyssp) {

					/* Get the current used size of the three stacks, in elements.  */
					var yysize = yyssp - yyss + 1;
					_goto = 'yyexhaustedlab'; break;			
				}

				/*IF DEBUG
				YYDPRINTF(2, "Entering state %d\n", yystate);
				*/
			
				if (yystate == YYFINAL) {
					_goto = 'yyacceptlab'; break;
				}

				_goto = 'yybackup'; break;

			/*-----------.
			| yybackup.  |
			`-----------*/
			case 'yybackup':

			  /* Do appropriate processing given the current state.  Read a
				 lookahead token if we need one and don't already have one.  */

				/* First try to decide what to do without reference to lookahead token.  */
				yyn = yypact[yystate];
				if (yyn == YYPACT_NINF) {
					_goto = 'yydefault'; break;
				}
				
				/* Not known => get a lookahead token if don't already have one.  */

				/* YYCHAR is either YYEMPTY or YYEOF or a valid lookahead symbol.  */
				if (yychar == YYEMPTY) {
					/*IF DEBUG
					YYDPRINTF(2, "Reading a token: ");
					*/
					yylval = [yylval];
					yylloc = [yylloc];
					yychar = yylex(yylval, yylloc/*, scanner*/);
					yylval = yylval[0];
					yylloc = yylloc[0];
				}

				if (yychar <= YYEOF) {
					yychar = yytoken = YYEOF;
					/*IF DEBUG				
					YYDPRINTF(2, "Now at end of input.\n");
					*/
				} else {
					yytoken = YYTRANSLATE(yychar);
					/*IF DEBUG
					YY_SYMBOL_PRINT("Next token is", yytoken, yylval, yylloc);
					*/
				}

				/* If the proper action on seeing token YYTOKEN is to reduce or to
				detect an error, take that action.  */
				yyn += yytoken;
				if (yyn < 0 || YYLAST < yyn || yycheck[yyn] != yytoken) {
					_goto = 'yydefault'; break;
				}
				yyn = yytable[yyn];
				if (yyn <= 0) {
					if (yyn == 0 || yyn == YYTABLE_NINF) {
						_goto = 'yyerrlab'; break;
					}
					yyn = -yyn;
					_goto = 'yyreduce'; break;
				}

				/* Count tokens shifted since error; after three, turn off error
				status.  */
				if (yyerrstatus) {
					yyerrstatus--;
				}
				
				/*IF DEBUG
				// Shift the lookahead token
				YY_SYMBOL_PRINT("Shifting", yytoken, yylval, yylloc);
				*/
				
				/* Discard the shifted token.  */
				yychar = YYEMPTY;
				
				yystate = yyn;

				yyvsa[++yyvsp] = yylval;
				yylsa[++yylsp] = yylloc;

				_goto = 'yynewstate'; break;

			/*-----------------------------------------------------------.
			| yydefault -- do the default action for the current state.  |
			`-----------------------------------------------------------*/
			case 'yydefault':
				yyn = yydefact[yystate];
				if (yyn == 0) {
					_goto = 'yyerrlab'; break;
				}
				_goto = 'yyreduce'; break;


			/*-----------------------------.
			| yyreduce -- Do a reduction.  |
			`-----------------------------*/
			case 'yyreduce':
				/* yyn is the number of a rule to reduce with.  */
				yylen = yyr2[yyn];
				
				/* If YYLEN is nonzero, implement the default value of the action:
					`$$ = $1'.
				
					Otherwise, the following line sets YYVAL to garbage.
					This behavior is undocumented and Bison
					users should not rely upon it.  Assigning to YYVAL
					unconditionally makes the parser a bit smaller, and it avoids a
					GCC warning that YYVAL may be used uninitialized.  */
				yyval = yyvsa[yyvsp + 1 - yylen];

				/* Default location.  */
				YYLLOC_DEFAULT(yyloc, yylsa, (yylsp - yylen), yylen);

				/*IF DEBUG
				if (yydebug) {
					var yynrhs = yyr2[yyn];
					var yyi;
					var yylno = yyrline[yyn];

					glsl.fprintf(2, "Reducing stack by rule %d (line %lu):\n", yyn - 1, yylno);
					// The symbols being reduced.
					for (yyi = 0; yyi < yynrhs; yyi++) {
						glsl.fprintf(2, "   $%d = ", yyi + 1);
						yy_symbol_print(2, yyrhs[yyprhs[yyn] + yyi],
							yyvsa[yyvsp + (yyi + 1) - (yynrhs)],
							yylsa[yylsp + (yyi + 1) - (yynrhs)]);
						glsl.fprintf(2, "\n");
					}
				}
				*/

				switch (yyn) {

					case 2:
						initialize_types(state);
						break;

					case 3:
						//state.symbols = new this.yy.symbol_table();
						//initialize_types(state);
					    break;

					case 17:

						/* FINISHME: The NULL test is required because pragmas are set to
						* FINISHME: NULL. (See production rule for external_declaration.)
						*/
						if (yyvsa[yyvsp].node != null) {
							state.translation_unit.push(yyvsa[yyvsp].node);
						}
						break;

					case 18:
						/* FINISHME: The NULL test is required because pragmas are set to
						* FINISHME: NULL. (See production rule for external_declaration.)
						*/
						if (yyvsa[yyvsp] != null) {
							state.translation_unit.push(yyvsa[yyvsp].node);
						}
						break;

					case 21:
						yyval = {};
						yyval.expression = new glsl.ast.expression(glsl.ast.operators.identifier, null, null, null);
						yyval.expression.set_location(yylloc);
						yyval.expression.primary_expression.identifier = yyvsa[yyvsp].identifier;
						break;

					case 22:
						yyval = {};
						yyval.expression = new glsl.ast.expression(glsl.ast.operators.int_constant, null, null, null);
						yyval.expression.set_location(yylloc);
						yyval.expression.primary_expression.int_constant = yyvsa[yyvsp].n;
						break;

					case 24:
						yyval = {};
						yyval.expression = new glsl.ast.expression(glsl.ast.operators.float_constant, null, null, null);
						yyval.expression.set_location(yylloc);
						yyval.expression.primary_expression.float_constant = yyvsa[yyvsp].real;
						break;

					case 26:
						yyval = {};
						yyval.expression = yyvsa[yyvsp - 1].expression;
						break;
						
					case 28:
						yyval = {};
						yyval.expression = new glsl.ast.expression(glsl.ast.operators.array_index, yyvsa[yyvsp - 3].expression, yyvsa[yyvsp - 1].expression, null);
						yyval.expression.set_location(yylloc);
						break;

					case 29:
						yyval = {};
						yyval.expression = yyvsa[yyvsp].expression;
						break;
				
					case 30:
						yyval = {};
						yyval.expression = new glsl.ast.expression(glsl.ast.operators.field_selection, yyvsa[yyvsp - 2].expression, null, null);
						yyval.expression.set_location(yylloc);
						yyval.expression.primary_expression.identifier = yyvsa[yyvsp].identifier;
						break;

					case 41:
						yyval = {};
						yyval.expression = yyvsa[yyvsp - 1].expression;
						yyval.expression.set_location(yylloc);
						yyval.expression.expressions.push(yyvsa[yyvsp].expression);
						break;

					case 42:
						yyval = {};
						yyval.expression = yyvsa[yyvsp - 2].expression;
						yyval.expression.set_location(yylloc);
						yyval.expression.expressions.push(yyvsa[yyvsp].expression);
						break;

					case 44:
						yyval = {};
						yyval.expression = new glsl.ast.function_expression(yyvsa[yyvsp].type_specifier);
						yyval.expression.set_location(yylloc);
						break;
					
					case 45:
						yyval = {};
						var callee = new glsl.ast.expression(yyvsa[yyvsp].identifier);
						callee.set_location(yylloc);
						yyval.expression = new glsl.ast.function_expression(callee);
						yyval.expression.set_location(yylloc);
						break;

					case 57:
						yyval = {};
						yyval.expression = new glsl.ast.expression(yyvsa[yyvsp - 1].n, yyvsa[yyvsp].expression, null, null);
						yyval.expression.set_location(yylloc);
						break;

					case 59:
						yyval = {};
						yyval.n = glsl.ast.operators.neg;
						break;

					case 60:
						yyval = {};
						yyval.n = glsl.ast.operators.logic_not;
						break;

					case 63:
						yyval = {};
						yyval.expression = new glsl.ast.expression_bin(glsl.ast.operators.mul, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression);
						yyval.expression.set_location(yylloc);
						break;

					case 64:
						yyval = {};
						yyval.expression = new glsl.ast.expression_bin(glsl.ast.operators.div, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression);
						yyval.expression.set_location(yylloc);
						break;

					case 67:
						yyval = {};
						yyval.expression = new glsl.ast.expression_bin(glsl.ast.operators.add, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression);
						yyval.expression.set_location(yylloc);
						break;
						
					case 68:
						yyval = {};
						yyval.expression = new glsl.ast.expression_bin(glsl.ast.operators.sub, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression);
						yyval.expression.set_location(yylloc);
						break;

					case 73:
						yyval = {};
						yyval.expression = new glsl.ast.expression_bin(glsl.ast.operators.less, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression);
						yyval.expression.set_location(yylloc);
						break;

					case 95:
						yyval = {};
						yyval.expression = new glsl.ast.expression(yyvsa[yyvsp - 1].n, yyvsa[yyvsp - 2].expression, yyvsa[yyvsp].expression, null);
						yyval.expression.set_location(yylloc);
						break;

					case 96:
						yyval = {};
						yyval.n = glsl.ast.operators.assign;
						break;

					case 100:
						yyval = {};
						yyval.n = glsl.ast.operators.add_assign;
						break;

					case 107:
						yyval = {};
						yyval.expression = yyvsa[yyvsp].expression;
						break;

					case 111:
						yyval = {};
						yyval.node = yyvsa[yyvsp - 1].declarator_list;
						break;

					case 112:
						yyval = {};
						yyvsa[yyvsp - 1].type_specifier.precision = yyvsa[yyvsp - 2].n;
						yyvsa[yyvsp - 1].type_specifier.is_precision_statement = true;
						yyval.node = yyvsa[yyvsp - 1].type_specifier;
						break;

					case 116:
						yyval = {};
						yyval['function'] = yyvsa[yyvsp - 1]['function'];
						yyval['function'].parameters.push(yyvsa[yyvsp].parameter_declarator);
						break;

					case 118:
						yyval = {};
						yyval['function'] = new glsl.ast['function']();
						yyval['function'].set_location(yylloc);
						yyval['function'].return_type = yyvsa[yyvsp - 2].fully_specified_type;
						yyval['function'].identifier = yyvsa[yyvsp - 1].identifier;
						state.symbols.add_function(yyvsa[yyvsp - 1].identifier);
						state.symbols.push_scope();
						break;

					case 124:
						yyval = {};
						yyval.parameter_declarator = new glsl.ast.parameter_declarator();
						yyval.parameter_declarator.set_location(yylloc);
						yyval.parameter_declarator.type = new glsl.ast.fully_specified_type();
						yyval.parameter_declarator.type.qualifier = yyvsa[yyvsp - 1].type_qualifier;
						yyval.parameter_declarator.type.specifier = yyvsa[yyvsp].type_specifier;
						break;

					case 125:
						yyval.type_qualifier = new glsl.ast.type_qualifier();
						break;

					case 137:
						if (yyvsa[yyvsp].fully_specified_type.specifier.type_specifier != glsl.type.struct) {
							//need to use parser error instead
							throw new Error("Empty declaration list");
						} else {
							yyval = {};
							yyval.declarator_list = new glsl.ast.declarator_list(yyvsa[yyvsp].fully_specified_type);
							yyval.declarator_list.set_location(yylloc);
						}
						break;

					case 138:
						yyval = {};
						var decl = new glsl.ast.declaration(yyvsa[yyvsp].identifier, false, null, null);
						yyval.declarator_list = new glsl.ast.declarator_list(yyvsa[yyvsp - 1].fully_specified_type);
						yyval.declarator_list.set_location(yylloc);
						yyval.declarator_list.declarations.push(decl);
						//var symbol = state.symbols.add_variable(yyvsa[yyvsp].identifier);
						//symbol.definition = yyvsa[yyvsp - 1];
						break;
					
					case 139:
						var decl = new glsl.ast.declaration(yyvsa[yyvsp - 2].identifier, true, null, null);
						yval = {};
						yyval.declarator_list = new glsl.ast.declarator_list(yyvsa[yyvsp - 3].fully_specified_type);
						yyval.declarator_list.set_location(yylloc);
						yyval.declarator_list.declarations.push(decl);
						break;

					case 140:
						yyval = {};
						var decl = new glsl.ast.declaration(yyvsa[yyvsp - 3].identifier, true, yyvsa[yyvsp - 1].expression, null);
						yyval.declarator_list = new glsl.ast.declarator_list(yyvsa[yyvsp - 4].fully_specified_type);
						yyval.declarator_list.set_location(yylloc);
						yyval.declarator_list.declarations.push(decl);
						break;

					case 143:
						yyval = {};
						var decl = new glsl.ast.declaration(yyvsa[yyvsp - 2].identifier, false, null, yyvsa[yyvsp].expression);
						yyval.declarator_list = new glsl.ast.declarator_list(yyvsa[yyvsp - 3].fully_specified_type);
						yyval.declarator_list.set_location(yylloc);
						yyval.declarator_list.declarations.push(decl);
						break;

					case 145:
						yyval = {};
						yyval.fully_specified_type = new glsl.ast.fully_specified_type();
						yyval.fully_specified_type.set_location(yylloc);
						yyval.fully_specified_type.specifier = yyvsa[yyvsp].type_specifier;
						break;

					case 146:
						yyval = {};
						yyval.fully_specified_type = new glsl.ast.fully_specified_type();
						yyval.fully_specified_type.set_location(yylloc);
						yyval.fully_specified_type.qualifier = yyvsa[yyvsp - 1].type_qualifier;
						yyval.fully_specified_type.specifier = yyvsa[yyvsp].type_specifier;
					    break;

					case 164:
						yyval = {};
						yyval.type_qualifier = new glsl.ast.type_qualifier();
						yyval.type_qualifier.flags.q = glsl.ast.type_qualifier.flags.constant;
						break;

					case 165:
						yyval = {};
						yyval.type_qualifier = new glsl.ast.type_qualifier();
						yyval.type_qualifier.flags.q = glsl.ast.type_qualifier.flags.attribute;
						break;

					case 166:
						yyval = {};
						yyval.type_qualifier = new glsl.ast.type_qualifier();
						yyval.type_qualifier.flags.q = glsl.ast.type_qualifier.flags.varying;
						break;
					
					case 172:
						yyval = {};
						yyval.type_qualifier = new glsl.ast.type_qualifier();
						yyval.type_qualifier.flags.q = glsl.ast.type_qualifier.flags.uniform;
						break;

					case 173:
						yyval = {};
						yyval.type_specifier = yyvsa[yyvsp].type_specifier;
						break;
					
					case 174:
						yyval = {};
						yyval.type_specifier = yyvsa[yyvsp].type_specifier;
						yyval.type_specifier.precision = yyvsa[yyvsp - 1].n;
						break;

					case 178:
						yyval = {};
						yyval.type_specifier = new glsl.ast.type_specifier(yyvsa[yyvsp].n);
						yyval.type_specifier.set_location(yylloc);
					    break;

					case 179:
						yyval = {};
						yyval.type_specifier = new glsl.ast.type_specifier(yyvsa[yyvsp].struct_specifier);
						yyval.type_specifier.set_location(yylloc);
						break;

					case 180:
						yyval = {};
						yyval.type_specifier = new glsl.ast.type_specifier(yyvsa[yyvsp].identifier);
						yyval.type_specifier.set_location(yylloc);
						break;

					case 181:
						yyval = {};
						yyval.n = glsl.type['void'];
						break;

					case 182:
						yyval = {};
						yyval.n = glsl.type.float;
					    break;

					case 183:
						yyval = {};
						yyval.n = glsl.type.int;
						break;

					case 185:
						yyval = {};
						yyval.n = glsl.type.bool;
						break;

					case 186:
						yyval = {};
						yyval.n = glsl.type.vec2;
						break;

					case 187:
						yyval = {};
						yyval.n = glsl.type.vec3;
						break;
					    
					case 188:
						yyval = {};
						yyval.n = glsl.type.vec4;
						break;
					
					case 202:
						yyval = {};
						yyval.n = glsl.type.mat3;
						break;
					
					case 206:
						yyval = {};
						yyval.n = glsl.type.mat4;
						break;

					case 208:
						yyval = {};
						yyval.n = glsl.type.sampler2D;
						break;

					case 232:
						/*if (!state.es_shader && state.language_version < 130) {
							yyerror(yylsa[yylsp], state, "precision qualifier forbidden in %s (1.30 or later required)\n", state.version_string);
						}*/
						yyval = {};
						yyval.n = glsl.ast.precision.high;
						break;

					case 233:
						/*
						if (!state.es_shader && state.language_version < 130) {
							yyerror(yylsa[yylsp], state, "precision qualifier forbidden in %s (1.30 or later required)\n", state.version_string);
						}
						*/
						yyval = {};
						yyval.n = glsl.ast.precision.medium;
						break;

					case 235:
						yyval = {};
						yyval.struct_specifier = new glsl.ast.struct_specifier(yyvsa[yyvsp - 3].identifier, yyvsa[yyvsp - 1].declarator_list);
						yyval.struct_specifier.set_location(yylloc);
						state.symbols.add_type(yyvsa[yyvsp - 3].identifier, glsl.type.void_type);
						break;

					case 238:
						yyval = {};
						yyval.declarator_list = yyvsa[yyvsp - 1].declarator_list;
						yyval.declarator_list.declarations.splice(1, 0, yyvsa[yyvsp].declarator_list.declarations);
						break;

					case 239:
						var type = new glsl.ast.fully_specified_type();
						type.set_location(yylloc);
						type.specifier = yyvsa[yyvsp - 2].type_specifier;
						yyval = {};
						yyval.declarator_list = new glsl.ast.declarator_list(type);
						yyval.declarator_list.set_location(yylloc);
						yyval.declarator_list.declarations.unshift(yyvsa[yyvsp - 1].declaration);
						break;

					case 240:
						yyval = {};
						yyval.declaration = yyvsa[yyvsp].declaration;
						break;

					case 242:
						yyval = {};
						yyval.declaration = new glsl.ast.declaration(yyvsa[yyvsp].identifier, false, null, null);
						yyval.declaration.set_location(yylloc);
						state.symbols.add_variable(yyvsa[yyvsp].identifier);
						break;

					case 246:
						yyval = {};
						//cast to node
						yyval.node = yyvsa[yyvsp].compound_statement;
						break;

					case 256:
						state.symbols.push_scope();
						break;

					case 257:
						yyval = {};
						yyval.compound_statement = new glsl.ast.compound_statement(true, yyvsa[yyvsp - 1].node);
						yyval.compound_statement.set_location(yylloc);
						state.symbols.pop_scope();
						break;

					case 261:
						yyval = {};
						yyval.compound_statement = new glsl.ast.compound_statement(false, yyvsa[yyvsp - 1].node);
						yyval.compound_statement.set_location(yylloc);
						break;

					case 262:
						if (yyvsa[yyvsp].node == null) {
							//_mesa_glsl_error(yylsa[yylsp], state, "<nil> statement\n");
						}
						yyval = {};
						yyval.node = [yyvsa[yyvsp].node];
						break;

					case 263:
						if (yyvsa[yyvsp].node == null) {
							//throw new Error("<nil> statement\n");
						}
						yyval = {};
						yyval.node = (yyvsa[yyvsp - 1].node);
						yyval.node.push(yyvsa[yyvsp].node);
						break;

					case 265:
						yyval = {};
						yyval.node = new glsl.ast.expression_statement(yyvsa[yyvsp - 1].expression);
						yyval.node.set_location(yylloc);
						break;
					
					case 266:
						yyval = {};
						yyval.node = new glsl.ast.selection_statement(yyvsa[yyvsp - 2].expression,
																	yyvsa[yyvsp].selection_rest_statement.then_statement,
																	yyvsa[yyvsp].selection_rest_statement.else_statement);
						yyval.node.set_location(yylloc);
						break;

					case 267:
						yyval = {};
						yyval.selection_rest_statement = {};
						yyval.selection_rest_statement.then_statement = yyvsa[yyvsp - 2].node;
						yyval.selection_rest_statement.else_statement = yyvsa[yyvsp].node;						
						break;

					case 268:
						yyval = {};
						yyval.selection_rest_statement = {};
						yyval.selection_rest_statement.then_statement = yyvsa[yyvsp].node;
						yyval.selection_rest_statement.else_statement = null;
						break;

					case 288:
						yyval = {};
						yyval.node = yyvsa[yyvsp].function_definition;
						break;

					case 289:
						yyval = {};
						yyval.node = yyvsa[yyvsp].node;
						break;

					case 291:
						yyval = {};	
						yyval.function_definition = new glsl.ast.function_definition();
						yyval.function_definition.set_location(yylloc);
						yyval.function_definition.proto_type = yyvsa[yyvsp - 1]['function'];
						yyval.function_definition.body = yyvsa[yyvsp].compound_statement;
						state.symbols.pop_scope();
						break;


					//incomplete states

					
					case 5:
					case 10:
					case 16:
					case 23:
					case 25:
					case 31:
					case 32:
					case 36:
					case 46:
					case 51:
					case 52:
					case 53:
					case 55:
					case 56:
					case 58:
					case 60:
					case 61:
					case 65:
					case 70:
					case 71:
					case 74:
					case 75:
					case 76:
					case 78:
					case 79:
					case 81:
					case 83:
					case 85:
					case 87:
					case 89:
					case 91:
					case 93:
					case 97:
					case 98:
					case 99:
					case 101:
					case 102:
					case 103:
					case 104:
					case 105:
					case 106:
					case 108:
					case 110:
					case 117:
					case 119:
					case 120:
					case 121:
					case 122:
					case 123:
					case 126:
					case 127:
					case 128:
					case 131:
					case 132:
					case 133:
					case 134:
					case 135:
					case 136:
					case 141:
					case 142:
					case 144:
					case 147:
					case 149:
					case 150:
					case 151:
					case 152:
					case 153:
					case 154:
					case 155:
					case 158:
					case 160:
					case 161:
					case 162:
					case 163:
					case 167:
					case 168:
					case 169:
					case 170:
					case 171:
					case 176:
					case 177:
					case 184:
					case 187:
					case 189:
					case 190:
					case 191:
					case 192:
					case 193:
					case 194:
					case 195:
					case 196:
					case 197:
					case 198:
					case 199:
					case 200:
					case 201:
					case 203:
					case 204:
					case 205:
					case 207:
					case 209:
					case 210:
					case 211:
					case 212:
					case 213:
					case 214:
					case 215:
					case 216:
					case 217:
					case 218:
					case 219:
					case 220:
					case 221:
					case 222:
					case 223:
					case 224:
					case 225:
					case 226:
					case 227:
					case 228:
					case 229:
					case 230:
					case 231:
					case 234:
					case 236:
					case 241:
					case 243:
					case 251:
					case 252:
					case 255:
					case 258:
					case 260:
					case 264:
					case 269:
					case 270:
					case 274:
					case 275:
					case 276:
					case 280:
					case 281:
					case 282:
					case 283:
					case 284:
					case 285:
					case 286:
					case 287:
					case 290:
						throw new Error('Missing state: ' + yyn);
					default:
						break;
				}

				/*IF DEBUG
				YY_SYMBOL_PRINT ("-> $$ =", yyr1[yyn], yyval, yyloc);
				*/

				YYPOPSTACK (yylen);
				yylen = 0;
				/*IF DEBUG
				YY_STACK_PRINT (yyssa, yyss, yyssp);
				*/

				yyvsa[++yyvsp] = yyval;
				yylsa[++yylsp] = yyloc;

				/* Now `shift' the result of the reduction.  Determine what state
				 that goes to, based on the state we popped back to and the rule
				 number reduced by.  */

				yyn = yyr1[yyn];

				yystate = yypgoto[yyn - YYNTOKENS] + yyssa[yyssp];
				if (0 <= yystate && yystate <= YYLAST && yycheck[yystate] == yyssa[yyssp]) {
					yystate = yytable[yystate];
				} else {
					yystate = yydefgoto[yyn - YYNTOKENS];
				}

				_goto = 'yynewstate'; break;
				
				/*------------------------------------.
				| yyerrlab -- here on detecting error |
				`------------------------------------*/
				case 'yyerrlab':
				/* If not already recovering from an error, report this error.  */
					if (!yyerrstatus) {
						++yynerrs;

						if (!YYERROR_VERBOSE) {
							yyerror(yylloc, state, YY_("syntax error"));
						} else {
							yymsg = yysyntax_error(yystate, yychar);
							yyerror(yylloc, state, yymsg);
						}
					}

					yyerror_range[1] = yylloc;

					if (yyerrstatus == 3) {
						/* If just tried and failed to reuse lookahead token after an
						error, discard it.  */

						if (yychar <= YYEOF) {
							/* Return failure if at end of input.  */
							if (yychar == YYEOF) {
								_goto = 'yyabortlab'; break;
							}
						} else {
							yydestruct("Error: discarding", yytoken, yylval, yylloc, state);
							yychar = YYEMPTY;
						}
					}
	
					/* Else will try to reuse lookahead token after shifting the error
					token.  */
					_goto = 'yyerrlab1'; break;


				/*-------------------------------------------------------------.
				| yyerrlab1 -- common code for both syntax error and YYERROR.  |
				`-------------------------------------------------------------*/
				case 'yyerrlab1':
					yyerrstatus = 3;	/* Each real token shifted decrements this.  */
				
					for (;;) {
						yyn = yypact[yystate];
						if (yyn != YYPACT_NINF) {
							yyn += YYTERROR;
							if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR) {
								yyn = yytable[yyn];
								if (0 < yyn) {
									break;
								}
							}
						}
					
						/* Pop the current state because it cannot handle the error token.  */
						if (yyssp == yyss) {
							_goto = 'yyabortlab'; break;
						}

						yyerror_range[1] = yylsa[yylsp];
						yydestruct("Error: popping", yystos[yystate], yyvsa[yyvsp], yylsa[yylsp], state);
						YYPOPSTACK (1);
						yystate = yyssa[yyssp];
						/*IF DEBUG
						YY_STACK_PRINT (yyssa, yyss, yyssp);
						*/
					}
					
					yyvsa[++yyvsp] = yylval;
					
					yyerror_range[2] = yylloc;
					/* Using YYLLOC is tempting, but would change the location of
					the lookahead.  YYLOC is available though.  */
					YYLLOC_DEFAULT (yyloc, yyerror_range, 2);
					yylsa[++yylsp] = yyloc;
					
					/*IF DEBUG
					// Shift the error token
					YY_SYMBOL_PRINT ("Shifting", yystos[yyn], yyvsa[yyvsp], yylsa[yylsp]);
					*/
					
					yystate = yyn;
					_goto = 'yynewstate'; break;

				/*-------------------------------------.
				| yyacceptlab -- YYACCEPT comes here.  |
				`-------------------------------------*/
				case 'yyacceptlab':
					yyresult = 0;
					_goto = 'yyreturn'; break;

				/*-----------------------------------.
				| yyabortlab -- YYABORT comes here.  |
				`-----------------------------------*/
				case 'yyabortlab':
					yyresult = 1;
					_goto = 'yyreturn'; break;
					
				/*-------------------------------------------------.
				| yyexhaustedlab -- memory exhaustion comes here.  |
				`-------------------------------------------------*/
				case 'yyexhaustedlab':
					/*IF YYERROR_VERBOSE
					yyerror(yylloc, state, YY_("memory exhausted"));
					yyresult = 2;
					// Fall through.
					*/

				case 'yyreturn':
					if (yychar != YYEMPTY) {
						 yydestruct("Cleanup: discarding lookahead", yytoken, yylval, yylloc, state);
					}
					/* Do not reclaim the symbols of the rule which action triggered
					 this YYABORT or YYACCEPT.  */
					YYPOPSTACK(yylen);
					/*IF DEBUG
					YY_STACK_PRINT(yyss, yyssp);
					*/
					return yyresult;
										
			}
		} //end while(true)
	}


	//-----------------------------------------------------------
	//	External interface

	function YYPRINT() {
		return glsl.parser.YYPRINT.apply(null, arguments);
	}

	function yyerror() {
		return glsl.parser.yyerror.apply(null, arguments);
	}

	function initialize_types() {
		return glsl.parser.initialize_types.apply(null, arguments);
	}
	
	function yylex() {
		return glsl.parser.yylex.apply(null, arguments);	
	}

	glsl.parser = {

		//out
		yytokentype : yytokentype,
		yyparse : yyparse,
		
		//in
		yylex : function(){},
		YYPRINT : function(){},
		yyerror : function(){},
		initialize_types : function(){}		
	};

}(glsl));


